嗨我需要使用系統調用read()從I/O讀取。我有下面的代碼調試read()系統調用 - 直到按下CTRL-C後才繼續執行
//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次。在每個輸入被讀取之後,在那裏具有字符將會使其打印。
不要在'stdin'上調用'fflush' - 它只對輸出流有效 - 在輸入流上使用它會導致** Undefined Behavior **。 – 2010-11-14 19:03:30