在我的一个CS课程中给出的任务中,我们的任务是创造一个非常难以阻止的叉炸弹。
需要免疫控制-c,control-z和control-d关闭终端。它也必须对sigkill和信号9免疫,我们很快就用sigsegv来处理信号处理,但事实就是如此。我读到sigaction无法捕获sigkill或sigstop信号。
我还读到守护进程将允许它在后台运行,因此关闭终端不会阻止它。
如何使叉炸弹过程免受sigkill信号的影响?
这是我们之前制作的叉炸弹。
B
此外,我正在使用虚拟盒来安全地测试它。
答案 0 :(得分:1)
无法避免/免疫sigkill
信号。阅读signal()
的手册页
它说信号SIGKILL和SIGSTOP无法被捕获或忽略
和
while(1){
fork();
}
这不是一个好主意,因为您无法根据需要创建流程,但有一些限制,请检查ulimit
。在没有资源的情况下,它会立即失败(sh
将显示错误消息)。