【发布时间】:2017-06-12 15:43:07
【问题描述】:
这是一个简短的 C 程序:
#include<stdio.h>
int main (void){
char cmd;
while(scanf("%c", &cmd) != EOF){
if(cmd == 'q'){
printf("Thanks\n");
return 0;
}
}
return 0;
}
当执行以下程序并使用键盘输入cmd 的值时,一切正常。
$ ./catproblem
q
Thanks
$
但是,当我尝试使用 cat 管道输入时,输入 q 时程序不会立即终止。由于某种原因,它等待任何其他输入,然后才终止。
$ cat | ./catproblem
q
Thanks
anything
$
是什么导致了这种行为?如果cat 用于输入,是否可以解决此问题,以便程序按预期工作?
【问题讨论】: