LINUX下,父进程想对子进程进行监控,如果子进程被kill -SIGKILL了,有没有办法把被kill的子进程从中断点恢复?(不是重启)
我想到的办法是平时不断的对子进程的内容进行备份,有没有其他的办法?

解决方案 »

  1.   

    这个问题也算是脑洞大开了。
    我觉得现有的机制,不可能恢复被kill的进程。不太明白你为什么要 "对子进程的内容进行备份"? 进程是个运行态,所有内容数据结构变量都在内存里,你非要把内存里的数据结构往disk里写?那这样的进程运气起来肯定奇慢无比。想明白你要备份什么,需要备份的是数据,而不是进程。
    如果你想控制某个进程的执行过程,那就去改这个进程对应binary的代码,而不是干涉kernel的signal处理机制。
      

  2.   

    你好,这个是不可能的 ,只要被kill了,不重启就不可能被恢复
      

  3.   

    你可以让子进程不处理kill这些信号,这样就杀不死了
    甚至可以设计让子进程在收到信号后不中止而是暂停,这样父进程就可以让子进程继续工作了,啥数据也没丢
    当然,对应的你最好另外设计一套中止的方法
      

  4.   

    子进程好像无法捕捉KILL -SIGKILL信号,收到该信号就直接终止了
      

  5.   

    如果被kill-9 成功了,进程该进程就变成等待父进程回收的僵尸进程,这个是时候,所有申请的资源都被释放。想从断点回复,几乎是不可能的吧!
      

  6.   

    kill杀死的进程断点恢复是 不可能的了,你可以让他进入其他状态不要用KILL