【发布时间】:2020-07-04 12:13:16
【问题描述】:
我有一个创建两个子进程的函数。在第一个子进程中,我正在写入一个文件,而在第二个子进程中,我也在一个与第一个不同的文件中写入。
在爸爸进程中,我正在执行函数execvp。
我需要的是函数execvp的stdout和stderr,这样两个子进程就可以将stderr和stdout输出的内容写入文件。然后最后我合并这两个文件。
我想知道我应该在哪里关闭管道以及我应该在哪里使用等待,这样我在使用函数 read 和 write 时不会遇到问题,这样我就不会陷入无限循环。我没有实现创建文件的函数、合并文件的函数和运行shell指令的函数,因为我只是想知道这是否是函数createTwoChild.的最佳结构@
【问题讨论】:
-
你需要类似的东西,例如
popen()如果您想读取孩子的输出。 -
@reichhart 谢谢,但我不是想从孩子那里读取输出。孩子只是在写文件。你觉得整体结构好吗?我不确定如何关闭管道
-
不清楚是否只是想将孩子的输出合并到父亲的输出中。注册。 “时间”:SIGCHLD 缺少 sighandler。 (不幸的是,编辑我的评论时发生了编辑超时。)
-
@reichhart 谢谢。两个孩子正在创建两个文件,他们在这个文件中写入。然后我合并这两个文件。
-
@reichart 嗯,你是对的,我应该放两个 wait(NULL) 对吗?