问题描述
所以我尝试使用 fork 将输出重定向到命令中指定的文件。首先我用管道,然后我用 dup2() 像 dup2(output_fd,1) 复制给我的文件的文件描述符代替标准输出 然后我关闭 output_fd。关闭(输出_fd)。自从我关闭文件后,该进程还会将输出发送到该文件吗?
解决方法
当你这样做
dup2(output_fd,1);
它使 STDOUT 指向 output_fd 指向的句柄。因此,在此阶段,您可以通过两种方式写入 output_fd 指向的流。
现在当你这样做
close(output_fd);
它会关闭 output_fd 但不会 STDOUT。因此,即使您关闭 output_fd,您仍然可以写入管道!