c中的标准输出/输入/错误文件

时间:2014-01-10 10:19:24

标签: c stdout stdin stderr

标准输入文件 - stdin 始终键盘,标准输出文件 - stdout 始终屏幕,以及标准错误文件 - stderr 总是屏幕? 为什么?

1 个答案:

答案 0 :(得分:3)

默认情况下,是的。 但系统如此灵活和强大的原因是它可以被重定向(由用户或程序两者)

键入shell时

command > file

您实际上将command的标准输出重定向到文件file

通过

command1 | command2

您将command1的标准输出重定向到command2的标准输出

以编程方式,file descriptor 0始终是stdin,1 stdout,2 stderr。

我建议学习dup and dup2以编程方式重定向它们。

实施例

int file = open("out.txt", O_APPEND | O_WRONLY);
int stdout_cpy = dup(1);    // Clone stdout to a new descriptor
dup2(file, 1);              // Make file the new fd 1, i.e. redirect stdout to out.txt