Yanıtlar:
Zombi süreçleri çoktan öldü. Onları öldüremezsin. kill
Komutu veya sistem çağrısı bir zombi süreci üzerinde hiçbir etkisi yoktur. (Bir zombi ile birlikte gidebilirsin kill
, ama bir dakika içinde göreceğimiz gibi, zombi değil ebeveyni vurmalısın.)
Bir zombi süreci aslında bir süreç değildir, sadece süreç tablosundaki bir giriştir. Zombi işlemiyle ilişkili başka kaynak yok: belleği veya çalışan kodu yok, dosyaları açık tutmuyor vb.
Bir süreç öldüğünde, diğer tüm kaynaklar temizlendikten sonra yapılacak son şey, süreç tablosundaki girdidir. Bu giriş, üst sürecin çocuğun çıkış durumunu izlemesine izin vermek için bir zombi oluşturacak şekilde tutulur. Ebeveyn çıkış durumunu wait
, sistem çağrıları ailesinden birini çağırarak okur ; bu noktada zombi kaybolur. Çağrı wait
isimli söylenen biçmek bir zombi metaforunu ölü olmak ancak bir şekilde hala tam olarak ölümden sonraki hayata işlenmez uzanan, çocuk. Ebeveyn (veya arayarak SIGCHLD sinyalini görmezden gelerek onu umursamıyor olması da gösterebilir sigaction
ile SA_NOCLDWAIT
bu durumda işlem tablosunda girişi derhal zaman çocuk ölür silinir, bayrak).
Böylece bir zombi sadece bir süreç öldüğünde ve ebeveyni wait
henüz çağırmadığında var olur . Bu durum ancak ebeveyn hala çalıştığı sürece devam edebilir. Ebeveyn çocuktan önce ölürse veya çocuğun durumunu okumadan ölürse, zombi üst süreci PID 1 ile işleme ayarlanır init
. İşlerinden biri, bir döngüyü init
çağırmak wait
ve böylece ebeveyninin geride bıraktığı herhangi bir zombi sürecini toplamaktır.
Bilemezsin kill
o zaten ölü gibi bir zombi sürecini.
Zombi süreçleri wait
ebeveynleri tarafından düzenlenmelidir, böylece çıkış durumları toplanır.
Linux'ta bulunan tek "yerleşik temizleme mekanizması", herhangi bir üst sürecin çocuklarının çıkış durumunu toplamadan önce ölmesi durumunda işe yarar. Bu durumda, her çocuk, çocuk üzerinde çıkış durumunu toplayacak ve işlem tablosundaki girişini kaldıracak init
olan süreç tarafından miras alınır wait
.
Bir sürecin ebeveyni ölür ölmez, süreç bir yetim haline gelir - zombi olup olmadığını göz ardı ederek. Yetimlere ne olur? Yeni bir ebeveyn alırlar init
. init
olacak wait
o nedenle yetim kavuşurken, toplanan her yetim üzerinde (aynı zamanda sıra bir zombi olmuş olabilir).
Hayır, zombiler için yerleşik bir temizleme mekanizması yoktur. Zombiler, ebeveynleri öldürüldükten sonra zombi cennetine gider. O zamana kadar işletim sistemi, çıkış durumunu üst öğeye döndürmelerini sağlar.
init
öldürmez . Durumlarını toplamak sadece çocuklarının üzerindedir.wait