簡體   English   中英

如何限制子線程或子進程以限制在C中派生

[英]How to restrict child thread or a child process to restrict from forking in C

在C語言中,我有一個子線程(使用pthreads),有什么方法可以限制這個子線程,以便我們不能在該線程內調用fork?

如果我們在內部編寫fork,則程序不應編譯。

我也可以有一個子進程而不是子線程,只要它不能進一步分叉。

基本上,我如何擁有一個子進程或子線程,它們不能再分叉一個進程。

您可以隨時嘗試使用pthread_atfork玩游戲: http : //pubs.opengroup.org/onlinepubs/009695399/functions/pthread_atfork.html

基本上,您可以使用pthread_atfork()安裝一個始終調用exit()的“子”回調。 這樣,您的線程可能仍會分叉,但是分叉​​的進程將立即退出,因此不會造成任何危害(並且僅產生最小的開銷)。

使用過程可能會更加復雜。 Linux允許您限制每個用戶的進程數(使用setrlimit()設置時稱為RLIMIT_NPROC)。 達到此限制后,對於給定的用戶標識,將無法再進行其他派生。 因此,您可以創建一個具有CAP_SETUID功能和一個虛擬用戶的父進程,並將RLIMIT_NPROC設置為1。這樣,您可以從父進程派生,將子uid更改為在其中創建的“受限”用戶的子uid。提升和降低CAP_SETUID功能。 此時,孩子將無法自行分叉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM