Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 当管道就位并覆盖了stdout和stderr时,printf会去哪里?_C_Pipe_Printf_Io Redirection - Fatal编程技术网

C 当管道就位并覆盖了stdout和stderr时,printf会去哪里?

C 当管道就位并覆盖了stdout和stderr时,printf会去哪里?,c,pipe,printf,io-redirection,C,Pipe,Printf,Io Redirection,我已经设置了重定向stderr和stdout的管道。当我使用printf时,它是将数据发送到stdout还是流1 如果它将其发送到stdout,我如何将其配置为将数据发送到流1 当我使用printf时,它是将数据发送到stdout还是流1 printf函数将数据发送到stdout。由于您已重定向stdout,它现在指向的文件不是您的控制台printf不在乎它是什么,它只是尽可能长时间地写 如果它将其发送到stdout,我如何将其配置为将数据发送到流1 所以,不,你不需要做任何特殊的事情——它是自

我已经设置了重定向stderr和stdout的管道。当我使用printf时,它是将数据发送到stdout还是流1

如果它将其发送到stdout,我如何将其配置为将数据发送到流1

当我使用printf时,它是将数据发送到stdout还是流1

printf
函数将数据发送到
stdout
。由于您已重定向
stdout
,它现在指向的文件不是您的控制台
printf
不在乎它是什么,它只是尽可能长时间地写

如果它将其发送到stdout,我如何将其配置为将数据发送到流1

所以,不,你不需要做任何特殊的事情——它是自动处理的

当我使用printf时,它是将数据发送到stdout还是流1

printf
函数将数据发送到
stdout
。由于您已重定向
stdout
,它现在指向的文件不是您的控制台
printf
不在乎它是什么,它只是尽可能长时间地写

如果它将其发送到stdout,我如何将其配置为将数据发送到流1


所以,不,您不需要做任何特殊的事情——它是自动处理的。

printf总是将数据发送到stdout。如果您使用管道重定向了stdout,它将转到stdout被管道传输到的进程


流1(假设您是指与文件描述符1关联的流)是标准输出,除非您正在做一些非常奇怪的事情(在这种情况下,停止)

printf总是将数据发送到标准输出。如果您使用管道重定向了stdout,它将转到stdout被管道传输到的进程


流1(假设您是指与文件描述符1关联的流)是标准输出,除非您正在做一些非常奇怪的事情(在这种情况下,停止)

我认为您对所涉及的层的理解有点误导

C运行时的
printf
使用
文件*stdout
,这(除非您使用
freopen
或类似工具)实际上相当于
fdopen(1,“w”)
:即,文件描述符1上的缓冲输出

通常,当您运行my_程序时,会将文件描述符1附加到终端。运行
my_program>file
时,在程序开始运行之前,文件描述符#1会附加到
file
。因此,
printf
,写入
stdout
,它(除非您更改)将涂鸦为文件描述符#1,将打印到文件而不是终端


程序之外的任何东西都不关心缓冲I/O,也不关心如何处理自己的标准输出,我认为您对所涉及的层的理解有点误导

C运行时的
printf
使用
文件*stdout
,这(除非您使用
freopen
或类似工具)实际上相当于
fdopen(1,“w”)
:即,文件描述符1上的缓冲输出

通常,当您运行my_程序时,会将文件描述符1附加到终端。运行
my_program>file
时,在程序开始运行之前,文件描述符#1会附加到
file
。因此,
printf
,写入
stdout
,它(除非您更改)将涂鸦为文件描述符#1,将打印到文件而不是终端

程序之外的任何东西都不关心缓冲I/O,也不关心如何使用自己的
stdout