Привет, мне нужно использовать системный вызов read () для чтения из ввода-вывода. У меня есть следующий код
//Reading in the commands
for(;;) {
n = read( fd, buf, 128 );
fflush(stdin);
printf("---\n");
}
Он не будет печатать строку "---", пока я не завершу программу, а затем напечатает все сразу. Я также попытался очистить поток ввода без удачи. Я не очень знаком с read()
, поэтому я точно не знаю, как это работает. Причина, по которой мне нужно использовать read()
, заключается в том, что мне нужно заставить CTRL-D завершить программу. Может ли кто-нибудь объяснить мне, почему это происходит и как действовать? Заранее спасибо.
PS: я провел еще несколько тестов и получил интересный результат:
for(i;i<3;i++) {
if( read( fd, buf, 128 ) < 0) {
printf("Read returned less than 0");
} else {
printf("Read is working\n");
}
}
удаление символа "\ n" заставляет его напечатать "Чтение работает" 3 раза после прочтения третьего ввода. наличие символа будет печатать после каждого ввода.