2011-03-18 135 views
10

perlipc/Signals殭屍如何傷害?

eval { 
    local $SIG{ALRM} = sub { die "alarm clock restart" }; 
    alarm 10; 
    flock(FH, 2); # blocking write lock 
    alarm 0; 
}; 
if ([email protected] and [email protected] !~ /alarm clock restart/) { die } 

如果正在超時操作系統()或QX(),這種技術是容易產生殭屍。如果這對你很重要,你需要做你自己的fork()和exec(),並殺死錯誤的子進程。

我有一個類似的代碼,其中被超時的操作是system()或qx()。

殭屍會消耗記憶力嗎?殭屍會傷害更多嗎?

+0

是的,殭屍會傷害更多的方式,比如吃掉你的大腦。 – 2013-06-10 02:46:41

回答

12

主要問題是它們消耗了進程表槽。 Linux的進程表可以容納64k個條目,所以這不可能導致問題,除非你在沒有清理殭屍的情況下進行大量分叉操作。我期望大多數(如果不是全部的話)其他現代* nixes具有相同大小的進程表。但是,當您運行ps時,確實看起來很難看。

內存並不是真正的問題,因爲每個殭屍只佔用幾個字節來記錄它的退出狀態。

8

它們消耗進程表中的內存和空間。

+19

和大腦。不要忘記大腦 – 2011-03-18 12:23:47