Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
Linux 关闭STDOUT如何影响printf_Linux_File_Unix_Operating System_Stdout - Fatal编程技术网

Linux 关闭STDOUT如何影响printf

Linux 关闭STDOUT如何影响printf,linux,file,unix,operating-system,stdout,Linux,File,Unix,Operating System,Stdout,如果有人在进程的文件描述符表中关闭进程的STDOUT,如下所示: close(STDOUT); 然后打开一个要读/写的文件: ​ 然后使用printf: printf("hello"); 我知道它不会出现在屏幕上,但它会被打印在文件中吗?或者他必须使用fprintf或写入系统调用吗?来自open的手册页: 成功调用返回的文件描述符将是进程当前未打开的编号最低的文件描述符。 当您关闭STDOUT的文件描述符时,后续的开放系统调用将把STDOUT的fd分配给新文件。Printf只发送给fd,不管

如果有人在进程的文件描述符表中关闭进程的STDOUT,如下所示:

close(STDOUT);
然后打开一个要读/写的文件: ​

然后使用printf:

printf("hello");

我知道它不会出现在屏幕上,但它会被打印在文件中吗?或者他必须使用fprintf或写入系统调用吗?

来自open的手册页:

成功调用返回的文件描述符将是进程当前未打开的编号最低的文件描述符。


当您关闭STDOUT的文件描述符时,后续的开放系统调用将把STDOUT的fd分配给新文件。Printf只发送给fd,不管它是否是标准输出。因此,本场景中的printf会将输出转储到“myfile”

谢谢您的回答
printf("hello");