我在循环中有一个fork,在fork之上我提示用户输入。在我的分叉过程中,还有一些打印。因为无法保证流程的运行顺序,所以我经常(或者总是)从子流程中获取行,在我对用户的提示和他们可以输入信息的地方之间打印。
即,我得到这样的东西:
Enter info: <OUTPUT FROM CHILD>
_
(其中_表示用户可以自由输入输入。)
由于我正在尝试允许我的父进程分叉多个子进程(每个进程基于用户给出的信息)同时运行,我不能等待子进程在让父进程继续之前结束。有没有办法让父母等待孩子的一部分完成才能继续前进?
答案 0 :(得分:0)
很大程度上取决于您真正想要做的事情,但您无法使用waitpid()
或wait()
等待部分流程完成。等待函数系列等待由于信号(SIGSTOP,SIGTTIN,SIGTTOU等)而导致停止的进程或进程停止。
有些问题:
syslog
守护进程吗?很大程度上取决于消息的目的,以及立即显示消息的重要性。
答案 1 :(得分:0)
其他答案肯定更一般,解决这个问题的正确方法会涉及某种管道,但我的情况实际上非常简单,只需要父母等待一段时间,所以我添加了一个{ {1}}行,让父母等待几毫秒让孩子完成打印。它绝对不是完美的,但它确实有效。