У меня проблемы с пониманием того, как read()
и write()
работают в C. Кажется, код, с которым я работаю, пишет в STDOUT_FILENO
и читает те же данные из STDIN_FILENO
.Мне интересно, если это так или нет, так как два дескриптора файла разные.
Я уже просмотрел справочные страницы, и они, похоже, совсем не помогли.
Вот код:
if (write(STDOUT_FILENO, "\x1b[6n", 4) != 4) return -1;
printf("\r\n");
char c;
while (read(STDIN_FILENO, &c, 1) == 1) {
if (iscntrl(c)) {
printf("%d\r\n", c);
} else {
printf("%d ('%c')\r\n", c, c);
}
}
Код выводит escapeпоследовательность, которая была записана так, как ее форматирует if
, что означало, что STDIN_FILENO
каким-то образом считывает вывод STDOUT_FILENO
.Так должно работать, и если да, то почему?