微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

终止LInux中的所有subprocess

我正在开发一个沙箱在Linux上。 而现在我很困惑终止沙箱中的所有进程。 我的沙盒的工作原理如下:起初只有一个进程在沙箱中运行。 然后它可以创build几个subprocess。 而subprocess也会创build它们的subprocess。 父进程可能会在其subprocess退出之前的某个时候退出。 最后沙箱将终止所有进程。

我曾经这样做,通过使用killall或pkill -u与沙箱独特的用户。但它似乎无法正常使用fork()快速的程序。

然后我searchpkill的源代码,并意识到pkill失去了primefaces性。

那么我怎么能达到我的目标呢?

什么是程序终止自己的进程的正确方法(Windows)

Linux:终止一系列进程的最可靠的方法

NodeJSsubprocess在SIGINT上终止

Windows Metro应用程序被操作系统终止

Python:调用process.terminate()不会杀死它

Kubernetes Nginx:如何进行零宕机部署?

closures“blah.exe已停止工作”消息。 C#

Linux杀死进程使用超时以毫秒为单位

Bash:当脚本终止时,如何终止脚本的subprocess?

在哪些情况下程序退出0x40010004代码

您可以使用进程组setpgid(2)和会话setsid(2) ,但是我没有限定你作为一个沙箱做什么(特别是因为如果其中一个进程是setuid或者改变它的进程组或会话本身,会失去它;仔细地读几次execve(2) !)。 注意,使用负pid杀死(2)会杀死整个进程组。

阅读一本好书,如高级Linux编程 。 考虑也使用chroot(2) 。

并解释什么, 为什么你真的想要做的。 沙箱比你想象的更难。 另请参阅功能(7) , 凭据(7)和SElinux 。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐