【问题标题】:How closing STDOUT effects printf关闭 STDOUT 如何影响 printf
【发布时间】:2018-11-28 04:25:28
【问题描述】:

如果有人像这样在文件描述符表中关闭进程的 STDOUT:

close(STDOUT);

然后打开一个文件进行读/写: ​

int ​fd = open(​"myFile"​, O_RDWR);

然后使用 printf:

printf("hello");

我知道它不会显示在屏幕上,但它会打印在文件中吗?还是他必须使用 fprintf 或 write 系统调用?

【问题讨论】:

    标签: linux file unix operating-system stdout


    【解决方案1】:

    来自 open 的手册页:

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

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

    【讨论】:

    • 感谢您的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多