-2
#include <stdio.h>

int main()
{
    printf("If I had more time, \n");
    write(STDOUT_FILENO, "I would have written you a shorter letter.\n", 43); 
    return 0;
}

根据标准输出是重定向到终端还是磁盘文件,输出有何不同?

4

3 回答 3

2

我假设问题是“为什么打印到终端时的输出与普通文件不同?”。当 stdout 是 tty 时,它通常是行缓冲的,因此 printf 调用 write 因为您的输出包含换行符。当输出是常规文件时,输出是块缓冲的,因此 c stdio 库会延迟写入。在这种情况下,通过 printf 写入的数据要等到 main 返回之后才会写入,因此数据会在您通过 写入的数据之后出现在输出中write

于 2013-10-06T01:30:23.703 回答
1

它不应该不同。两个语句(printf 和 write)都写入标准输出,因此写入终端。如果你将它重定向到一个磁盘文件,它只会是一样的。

于 2013-10-05T19:23:58.407 回答
1

冲洗可能会略有不同。如果程序在关闭文件描述符之前(过早地)终止,则文件可能不包含所有输出,而到 stdout 的输出会用换行符刷新。

于 2013-10-05T19:35:27.970 回答