Cod*_*der 5 unix linux operating-system stdout file
如果有人关闭进程\'STDOUT如果有人在其文件描述符表中
close(STDOUT);\nRun Code Online (Sandbox Code Playgroud)\n然后立即打开一个文件进行读/写:
\nint \xe2\x80\x8bfd = open(\xe2\x80\x8b"myFile"\xe2\x80\x8b, O_RDWR);\nRun Code Online (Sandbox Code Playgroud)\n然后使用printf:
int \xe2\x80\x8bfd = open(\xe2\x80\x8b"myFile"\xe2\x80\x8b, O_RDWR);\nRun Code Online (Sandbox Code Playgroud)\n我知道它不会出现在屏幕上,但是它会打印在文件中吗?如果没有,您是否必须使用fprintf或write系统调用?
小智 4
从 open 的手册页:
成功调用返回的文件描述符将是当前未为进程打开的最小编号的文件描述符。
当你关闭STDOUT的文件描述符时,后续的open系统调用会将stdout的fd分配给新文件。printf 只是发送到 fd,不管它是否是 stdout。因此,这种情况下的 printf 会将输出转储到“myfile”