乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      宋寶華: 僵尸進程的成因以及僵尸可以被“殺死”嗎?

       漢無為 2019-11-19

      僵尸不可能被殺死,因為它已經(jīng)死了,不存在再死一次的問題。死的對立面是活,死者已死。只有活的進程才可能被殺死。

      什么是僵尸

      首先要明確一點,僵尸進程的含義是:子進程已經(jīng)死了,但是父進程還沒有wait它的一個中間狀態(tài),這個時候子進程是一個僵尸。正常情況下子死,父wait,清理掉子進程的task_struct,釋放子進程的PID:

      編譯上述程序,運行,我們看到2個a.out進程:

      殺死子進程4578,看到父進程的打?。?br>

      之后,4578會消失,因為父進程執(zhí)行到了wait,也知道了子進程是被信號2殺掉的。

      但是如果子進程死了,父進程不執(zhí)行到wait,比如把上圖中的'#if 0'改為'#if 1',殺死子進程后,子進程就會是一個僵尸:

      我們重新運行,當我們用kill -2殺掉子進程4628后,我們發(fā)現(xiàn)4628成為一個僵尸,狀態(tài)變?yōu)閆+,名字上也加了一個棺材[],成為[a.out]:

      僵尸不可能被殺死

      我們看到上面4628是個僵尸很不爽,所以我們想把它干掉,據(jù)說Linux有個信號9,神擋殺神,佛擋殺佛,我們現(xiàn)在來用kill -9干掉4628:

      從上圖可以看出,我們把4628用kill -9捅了好多刀,但是最后看4628這個僵尸,還是沒有消失。

      因為僵尸已經(jīng)是死了,它不可能再次被殺死,你給它捅一萬刀,它也是個死人,不可能再次死!

      僵尸不可能被殺死,因為它已經(jīng)死了!只等父進程來wait清理尸體了。

      這個時候我們能夠把僵尸消失掉的方法,就是殺死僵尸進程的父進程4627。

      一個僵尸可以被殺死的假象

      下面的這個程序證明“僵尸可以被殺死”

      我們在主線程里面,pthread_create()創(chuàng)建線程后,pthread_exit()退出,這個時候我們會發(fā)現(xiàn),在ps命令里面,a.out顯示為一個僵尸:

      這個時候我們來殺死4730這個僵尸:

      kill -9 4730

      我們會驚奇地發(fā)現(xiàn),4730真地會從ps命令里面消失!

      我們把時間軸拉回調(diào)用'kill -9 4730'之前。剛才我們“看起來”能殺死僵尸的本質(zhì)原因是,當主線程4730調(diào)用pthread_exit()退出后,主線程4730的狀態(tài)確實是僵尸了,但是該進程里面的4731線程,卻沒有死:

      看看4731:

      4731是活著的,證明整個進程并沒有掛。所以4730的退出,只是讓整個進程半死。而由于ps這些命令的誤會,4730湊巧又是整個進程的PID,它顯示地好像整個4370成了僵尸一樣。

      那么,根據(jù)POSIX標準關于信號(signal)的定義,當我們執(zhí)行kill -9 4730(4730是4730和4731的TGID,也是整個進程用戶態(tài)視角的PID)的時候,是要殺死整個4730進程的,所以這個時候4731被我們殺死,整個進程就都死了,這個時候,執(zhí)行到父進程的wait邏輯,導致僵尸消失。

      所以,在本例中,kill -9 4730看起來是'殺死了僵尸”,實際是殺死了4730整個進程(里面的每個線程),導致整個進程死。在次之前,整個進程實際還是活的。

      (完)


      Linux閱碼場原創(chuàng)精華文章匯總

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多