执行以下 C 代码
#include <stdio.h>
int main(int argc, char **argv) {
char stdinput[10];
while (1) {
fgets(stdinput, 10, stdin);
fputs(stdinput, stdout);
}
}
产生:
通过控制台:
./a.out
input
input
然后它等待更多的输入。也就是说,它将 stdin 回显到 stdout,类似于cat
.
通过管道:
echo input | ./a.out
input
input
input
[...]
启动后,它会自行淹没控制台,无需交互。
这个示例程序正是我用于测试的程序;这不是削减。我希望这两个测试的行为方式相同。发生了什么?