2011-04-28 33 views
0

在我的C++程序中,幾個子進程使用fork和execv啓動。我不等他們,所以他們在後臺運行。當他們完成運行時,我想運行某個功能。如何才能做到這一點?當子進程結束時調用函數

回答

2

收聽SIGCHLD信號並在處理程序中調用您的函數。要小心你在處理程序中調用的內容,只能調用異步信號安全函數。

+0

你怎麼知道這些功能是什麼? – 2011-04-28 07:02:29

+0

@ z-buffer:在這個頁面的末尾有一個列表:http://linux.die.net/man/2/signal – cnicutar 2011-04-28 15:28:19

0

我猜你想等待進程完成,但你想要並行運行進程而不是順序進程。如果是這樣,請像現在一樣啓動每個進程,然後在每個子進程上使用系統調用waitpid()。當每個進程退出時,每個waitpid都會返回。

+0

應該waitpid使用WNOHANG? – 2011-04-28 07:01:49

+0

如果您想等待子流程完成,則不需要。 – 2011-04-28 08:12:56

+0

我不希望父進程等待孩子。 – 2011-04-28 09:16:26

相關問題