如果某人关闭了一个过程' STDOUT在它的文件描述符表中如下:
close(STDOUT);
然后打开一个要读/写的文件:
int fd = open("myFile", O_RDWR);
然后使用printf:
printf("hello");
我知道它不会进入屏幕,但它会被打印在文件中吗?或者他是否必须使用fprintf或写系统调用?
答案 0 :(得分:1)
来自open的手册页:
成功调用返回的文件描述符将是当前未为该进程打开的编号最小的文件描述符。
当您关闭STDOUT的文件描述符时,后续打开的系统调用会将stdout的fd分配给新文件。 Printf只是向fd发送它是否是stdout并不重要。因此,此方案中的printf会将输出转储到“myfile”