2015-02-11 89 views
0

如何在linux shell中創建一個不被Ctrl-C殺死的殭屍進程,並在死亡之前創建自己的副本?如果可能的話,我們將如何殺死這樣一個過程?如何在linux shell中創建一個未被Ctrl-C殺死的殭屍進程?

+1

什麼是你的使用情況? – 2015-02-11 17:10:48

+1

只要處理SIGINT(默認處理程序就是殺死進程)。你可以用'kill -9'來殺死它,意思是「[從軌道上運行](https://www.youtube.com/watch?v=aCbfMkh940Q)」。 – 2015-02-11 17:12:53

回答

0

根據定義,殭屍進程已經死亡。它不會消耗任何超出流程表中條目的資源。產生它的過程要麼忽略了wait的記帳,要麼在fork之前忽略SIGCHLD。由於它已經退出,kill對殭屍進程沒有影響(也不會影響kill -9)。當它的父母調用waitpid()或退出時,將從進程表中刪除只有或退出。

如果你只是想你的腳本忽略按Ctrl - çkill,使用trap "code" SIGNALS

#!/bin/bash 
trap "echo Not dead yet!" SIGINT SIGTERM 
echo "Kill me with kill -9 $$" 
while true; do sleep 1; done