<分区>
在我的程序中,我使用 fork 和 execvp 创建一个子进程。现在我想将子进程的输出定向到标准输出和当前目录中的文件。那么如何实现呢?
<分区>
在我的程序中,我使用 fork 和 execvp 创建一个子进程。现在我想将子进程的输出定向到标准输出和当前目录中的文件。那么如何实现呢?
最佳答案
你不能将一个文件描述符绑定(bind)到两个东西——没有办法让 write(x, "hello world")
同时写入标准输出和文件。相反,您必须拥有三个文件 - 父级从中读取的子级标准输出 fd、父级标准输出 fd 和父级文件的 fd。
这是你要做的:
从管道读取并写入 stdout 和输出文件的循环必须运行,直到子进程关闭其管道末端,因此您可能需要创建一个线程在后台执行此操作。
仅供引用,这就是世界上每个 shell 实现管道的方式 cat 文件 | grep 你好
关于c - 如何将 child_process 的标准输出重定向到标准输出和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20789604/