![禁用 pid-namespace init 进程信号处理程序限制](https://linux22.com/image/99223/%E7%A6%81%E7%94%A8%20pid-namespace%20init%20%E8%BF%9B%E7%A8%8B%E4%BF%A1%E5%8F%B7%E5%A4%84%E7%90%86%E7%A8%8B%E5%BA%8F%E9%99%90%E5%88%B6.png)
Ubuntu 16.04 / Linux 版本 4.4.0-47-generic / gcc 版本 5.4.0
我想使用 linux cgroup 实现一个容器,部分实现是将进程运行到新的 pid 命名空间中。
从文档
只有“init”进程已为其建立了信号处理程序的信号才能由 PID 命名空间的其他成员发送到“init”进程。此限制甚至适用于特权进程,并防止 PID 命名空间的其他成员意外终止“init”进程。
不幸的是,这适用于 init 进程本身。例如,如果断言闯入 init 进程并且它没有 sig6 的处理程序,则断言代码将发送 sig11。
有什么方法可以禁用此功能(至少在 init 进程向自身发送信号的情况下)。我无法强制 init 进程为这种情况提供信号处理程序,我想知道为什么该进程停止了。
一个小黑客可以是创建一个虚拟初始化进程,它将以某种方式转发来自目标程序的信号,但是有一个非黑客的解决方案吗?