В моей простой программе:
#include <iostream>
#include <unistd.h>
#include <fcntl.h>
#include <sstream>
using namespace std;
int main(int argc, char *argv[]) {
stringstream ss;
ss << "What does the quick brown fox say?" << endl;
int file_descriptor = open("/dev/tty", O_RDONLY | O_WRONLY);
write(file_descriptor, ss.str().c_str(), ss.str().size());
}
Я открываю поток терминала, используя комбинацию O_RDONLY
| O_WRONLY
, и это, похоже, работает нормально. Я получаю, что вы должны использовать O_RDWR
, потому что он дает более четкое смысловое значение, но мой вопрос заключается в том, зачем беспокоиться о создании целого другого флага, если уже работает соединение двух существующих флагов? Есть ли какая-то историческая причина для этого, или я просто что-то пропускаю, и это действительно не работает?