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

标签 c stdout stdin stderr

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

最佳答案

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

当您在 shell 中输入时

command > file

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

通过做

command1 | command2

command1 的标准输出重定向到 command2 的标准输入

以编程方式,file descriptor 0 始终为标准输入,1 为标准输出,2 为标准错误。

我建议了解 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

关于c - c 中的标准输出/输入/错误文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21041656/

相关文章:

linux - SSH_MSG_CHANNEL_REQUEST exec 之后,sshd 是否将数据发送到 stdin

c++ - 文件指针行为?

ctime 随机返回 NULL

arrays - 从 NUL 分隔输入填充 bash 数组

node.js - Nodejs始终无法完整捕获子进程的stdout数据,无用子进程fflush(stdout)

c - 我的 C 程序生成不需要的输出

c - 将fork()的子级设置为前台,然后退出父级

c - 在 macOS 上的链接时获取 __TEXT 部分的大小

c - 如何用 0(零)填充整数?

Java:将 stdout 和 stderr 编程为某种处理程序