防止儿童过程中的分叉

时间:2014-12-07 22:41:20

标签: c linux kernel

我有一个Linux进程(C程序),它产生了几个子进程。我想禁止在系统级别的那些子进程中进行另一次分叉,这样如果他们试图分叉那些进程就会被杀死。怎么实现呢?我更喜欢将此策略嵌入主机C代码中。 setrlimit(2)能做到吗?

1 个答案:

答案 0 :(得分:1)

是的,setrlimit()可以做到这一点。请参阅手册页并阅读

  

RLIMIT_NPROC
               最大的进程数(或者更准确地说是在Linux上,线程)   可以为调用进程的真实用户ID创建。遇到这个   限制,叉(2)                因错误EAGAIN而失败。

或者,您可以使用/etc/security/limits.conf为流程设置硬限制。查看文件中的一些示例。

#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0