我想在啓動時掛起(暫停)分叉進程,稍後恢復。有什麼辦法可以用POSIX或Solaris來做到這一點。啓動時掛起分叉進程
回答
我是通過使用信號量和信號處理程序完成的。要喚醒孩子,父進程會向子進程發送一個信號,然後再從信號處理程序中發佈信號。那個等待那個信號量的孩子,然後醒了過來。
您可以發送您的流程SIGSTOP
,然後通過SIGCONT
繼續。
爲什麼不在分叉後的子進程代碼中調用pause()
?
要麼是這樣,要麼是對sigsuspend(2)的調用,然後是kill(pid, SIGXXX),其中SIGXXX是選擇的信號。 SIGCONT也許? –
@Jorgen,sigsuspend不會做你認爲的事情。 –
@邁克爾:它確實是文檔所說的。 –
- 1. java進程在啓動時掛起
- 2. 如何超時可能掛起的分叉進程?
- 3. RMagick(ImageMagick)在分叉進程中運行時掛起
- 4. 從另一個java進程啓動java進程時進程掛起
- 5. 即使使用線程,啓動進程會掛起主進程
- 6. ddd在啓動時掛起
- 7. Eclipse啓動時掛起
- 8. Elasticsearch在啓動時掛起
- 9. FDT在啓動時掛起
- 10. Eclipse啓動時掛起
- 11. 分叉的子進程掛在node.js
- 12. 從子進程啓動時,Drush掛起.Popen
- 13. 重定向輸出相對較大時啓動進程掛起
- 14. 分叉進程
- 15. SDL_SetVideoMode掛起進程
- 16. 程序在使用進程時掛起
- 17. Alfresco tomcat在啓動過程中掛起
- 18. RubyMine在啓動調試器時掛起
- 19. Hubot在啓動時掛起/凍結
- 20. 模擬器在啓動時掛起
- 21. 多個Android AVD在啓動時掛起
- 22. 在Ubuntu上啓動Firefox時Selenium掛起
- 23. icCube負載在啓動時掛起
- 24. JRuby:Watir在啓動瀏覽器時掛起
- 25. Crystal Report 11在啓動時掛起
- 26. eclipse/TFS在啓動時掛起
- 27. 掛起並恢復由QProcess在Qt中啓動的子進程
- 28. Java VisualVM掛起連接到本地從eclipse啓動的進程
- 29. Socket.io node.js掛起並monit不重新啓動進程
- 30. 通過python多處理啓動子進程掛起
在執行過程中發送SIGSTOP是否安全?他們不是一種從一開始就暫停的方式嗎? Ptrace是我想到的一件事。 – MetallicPriest
您剛剛推薦了一種易受競爭條件影響的解決方案。 –
您可以隨時使用raise來發送信號:http://pubs.opengroup.org/onlinepubs/009695399/functions/raise.html –