[英]Wait for part of child process to finish?
我有一個分叉出現在循環中,在分叉上方,我提示用戶輸入。 在我的分叉過程中,還有一些印刷。 因為不能保證流程的執行順序,所以我經常(或始終)從子流程打印中得到提示,提示行是用戶和用戶可以輸入信息的地方。
即,我得到這樣的東西:
Enter info: <OUTPUT FROM CHILD>
_
(其中_表示用戶可以自由輸入輸入。)
由於我試圖允許父進程派生同時運行的許多子進程(每個子進程都基於用戶提供的信息),因此我無法等待子進程終止后再繼續父進程。 有沒有辦法讓父母在繼續前進之前等待孩子的一部分完成?
在很大程度上取決於您實際上要執行的操作,但是您不能使用waitpid()
或wait()
等待進程的一部分完成。 等待函數系列等待垂死的進程或由於信號而停止的進程(SIGSTOP,SIGTTIN,SIGTTOU等)。
一些問題:
syslog
守護程序? 在很大程度上取決於消息的目的以及消息即時顯示的重要性。
其他答案肯定更通用,解決此問題的正確方法將涉及某種管道,但是我的情況實際上非常簡單,只需要父級等待一會兒,因此我添加了usleep()
行,使父母等待幾毫秒讓孩子完成打印。 絕對不是完美的,但是確實有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.