我有一些代碼看起來像這樣後臺進程在其父進程終止時被終止?
function doTheThing{
# a potentially infinite while loop...
}
# other stuff...
doTheThing &
trap "kill $!" SIGINT SIGTERM
奇怪的是,當我CTRL-C出父進程的循環完成之前,我得到這個過程不存在的消息。此外,如果我擺脫陷阱,我不能找到一個ps -aF的過程。看起來後臺進程在其父進程終止時被殺死,但我的理解是不應該發生。我只是想確保我能夠安全地離開陷阱,並且不會在任何地方留下殭屍進程。
Control-C會殺死整個進程組,而不僅僅是進程。 – Barmar
殭屍進程是一個已經死亡的進程,但其父進程尚未調用「wait」。如果父母被殺,殭屍會被等待它的'init'繼承。 – Barmar
所以要清楚,你是說如果我擺脫陷阱,我不會留下任何額外的流程? –