我有一個Linux進程(C程序),它產生了一對子進程。我希望在系統級別的這些子進程中禁止另一個分叉,這樣如果這些進程試圖分叉,就會被殺死。如何實現這一目標?我更喜歡將此策略嵌入到主機C代碼中。 setrlimit(2)
可以做到嗎?防止在子進程中分叉
2
A
回答
1
是的,setrlimit()可以做到這一點。請參閱手冊頁和
RLIMIT_NPROC
閱讀起來的最大進程數(或者,更準確地說在Linux上,線程)是 可以調用進程的真實用戶ID創建。在遇到此限制時,fork(2) 將失敗,並顯示EAGAIN錯誤。
或者,您可以使用/etc/security/limits.conf
設置對進程的硬限制。查找文件中的一些示例。
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
+0
我現在還不確定。你會如何限制子進程?他們繼承自己的限制。 Ptrace解決方案看起來更可行。 – eeq 2014-12-08 11:08:13
相關問題
- 1. 防止大孩子在C中分叉
- 2. 分叉子進程
- 3. 進程分叉,子進程等[Java]
- 4. 分叉的子進程掛在node.js
- 5. 在子進程中使用紅寶石殺死分叉進程
- 6. 如何用電子分叉子進程
- 7. 分叉進程
- 8. 終止分叉進程(轉發端口)
- 9. 防止子進程的子進程寫入標準輸出
- 10. 分叉後退出子進程
- 11. 分叉子進程和C++對象
- 12. 在分叉進程中嵌入Mojolicious :: Server
- 13. 在django視圖中分叉進程
- 14. 如何在python/django中分叉進程?
- 15. 如何殺死python中的分叉子及其jackd子進程
- 16. 爲什麼分叉的子進程在我分叉後立即退出?
- 17. 用Perl的舞者在子進程中分叉運行代碼
- 18. 防止子進程在c中顯示shell窗口#
- 19. 如何防止子進程在擴展塢中彈跳?
- 20. 防止子進程.Popen在python中顯示輸出
- 21. php進程分叉和獲取子進程號
- 22. 分叉父進程退出後跳回到子進程
- 23. 如何在shell腳本中從分叉子進程獲取進程ID(pid)
- 24. 如何防止從產卵子進程產生的進程?
- 25. 防止子進程成爲孤兒進程
- 26. 分叉在Python子進程下的多個應用程序
- 27. 在golang:防止子進程以從調用過程
- 28. 與分叉進程混淆?
- 29. longjmp從分叉進程
- 30. 父進程在C#中終止時如何終止子進程
你可以發表一些代碼嗎?如果你只在你的父母過程中分叉,那麼在子女中將沒有辦法分叉/你如何看待子女分支 – chris 2014-12-07 22:44:50
這個機制有多安全?您是否有任何特定的攻擊方案,或者它是用於調試? – 5gon12eder 2014-12-07 22:45:03
@ 5gon12eder是的!絕對安全,因爲我執行不可信的子代碼。 – eeq 2014-12-07 22:45:59