【发布时间】:2012-12-28 20:31:06
【问题描述】:
让我们看看下面的代码:
int main(void)
{
char c;
while ((c = getchar()) != EOF)
putchar(c);
return (0);
}
此程序仅在新行作为字符传递后才回显字符。 我尝试使用 read 系统调用直接读取并将 len 作为 1 传递,它仍然仅在传递新行时读取。我这里有两个问题:谁实现了这个优化,是内核还是终端/shell?
其次,谁在第一时间回显字符,也就是在第一次印刷本身。终端/shell 在这个程序的整个执行过程中是否起任何作用?
【问题讨论】:
-
我知道 shell 有点负责任:当你调用它时,无论有没有重定向,程序的行为都会有所不同:
./a.outvs./a.out < input.txt > output.txtvs ...