Bir zombinin yetimleri olabilir mi? Yetim çocuklar zombiye ulaşarak rahatsız olur mu?


27

Anladığım kadarıyla, bir zombi süreci öldü, ancak ebeveyni (veya initzombinin kendisi bir yetim ise) çıkış durumunu kontrol edene kadar, süreç tablosunda bir yer tutucu olarak hala var .

Ve benim yetim süreçleri anlayışım, onlar hala hayatta ve çalışan ancak ebeveynleri ölen süreçlerdir.

Bir zombi zaten ölmüş olduğundan, çocukları öksüz sayılır, değil mi? Etkilenecekler mi zombi biçiliyor? Spesifik olarak, initonları yalnızca zombiye ulaşıldıktan sonra çocukları olarak mı evlat edinir, yoksa ebeveyn bir zombi haline gelir gelmez evlat olur mu?


Çocuk süreçlerinin initebeveynleri ölür ölmez evlenmeye başlaması mantıklıdır (ve bunun bir zombi haline gelmesini de içerir). Bir zombi çocuklarına bakmaz. Hiçbir şey yapmaz. Sadece bir pidnoktada dolaşan bir ölüm durumu bilgisi .
PSkocik

Bu, bir zombinin yetimlerinin zombiler olamayacağı anlamına mı geliyor, çünkü hemen onlar tarafından bakılıyorlar initmı?
Joker

Doğru. Ya da zombiler haline gelirlerse, initonlara ulaşana kadar sadece küçük bir süre boyunca olur.
PSkocik

6
Bu sorunun başlığı "Sıcak Ağ Soruları" bölümünde görünene kadar bekleyemem ...
Nathan Osman

@NathanOsman, bu harika olurdu, ama gitmek gibi görünüyor. :(
Joker

Yanıtlar:


15

Anladığım kadarıyla, bir zombi süreci öldü, ancak yine de veli (ya da zombinin kendisi bir yetim ise) giriş durumunu kontrol edene kadar işlem tablosunda bir yer tutucu olarak varlığını sürdürüyor.

Doğru.

Ve benim yetim süreçleri anlayışım, onlar hala hayatta ve çalışan ancak ebeveynleri ölen süreçlerdir.

Doğru.

Bir zombi zaten ölmüş olduğundan, çocukları öksüz sayılır, değil mi?

Evet. Ebeveyn öldüğünde, öldü. Çocuklarıyla ilgili olarak, ebeveynin bir zombi olarak kalması önemli değil: çocuklar, ebeveynleri öldüğü zaman yetim olurlar ve sonra ebeveynleri ile olan bağlantılarını kaybederler.

Etkilenecekler mi zombi biçiliyor? Spesifik olarak, init onları sadece zombiye ulaşıldıktan sonra çocukları olarak mı evlat edinir, yoksa ebeveyn bir zombi haline gelir gelmez evlat edinilir mi?

Hayır ve ikincisi, yukarıda belirtildiği gibi.


8

Eğer deneysel sonuçlar yapacaksa, en azından systemdinit, zombinin yetimlerini en kısa sürede alacaktır:

foo.c:

#include <unistd.h>

int main(void)
{
    pid_t child = fork();
    if (child < 0)
        return -1;
    if (child == 0)
    {
        pid_t grand_child = fork();
        if (grand_child < 0)
            return -1;
        if (grand_child == 0)
            sleep (1000);
        else
            return 0;
    }
    else
        sleep (1000);
    return 0;
}

Bir terminalde:

$ gcc -o foo foo.c
$ ./foo

Başka bir terminalde:

$ pgrep foo                         
25548
25549
25550
$ pstree -pa 25548
foo,25548
  └─(foo,25549)
$ pstree -psa 25550
systemd,1
  └─foo,25550
$ ps -o stat,pid -p $(pgrep -d, foo)
STAT   PID
S+   25548
Z+   25549
S+   25550

Ve iyi olmalı, bu onun işi.
Gilles 'SO- kötülük'

@Gilles emin, yetim toplama işini init, ancak belirtir bazı standart yoktur gerektiğini toplanacak? Aksi halde, uygulamanın bir miktar yolu olabileceğini hayal ediyorum.
muru

Bunun için yazılı bir standart olduğunu sanmıyorum. POSIX yalnızca “çağıran sürecin mevcut tüm alt işlemlerinin ve zombi işlemlerinin üst işlem kimliğinin, uygulama tanımlı bir sistem işleminin işlem kimliğine ayarlanması gerektiğini” belirtmektedir. Yapması gerekiyor, hatta bu sistem süreci nasıl bilgilendirilir. Unix sistemlerinde, bu sistem işlemi PID 1'dir, SIGCLD'yi alır ve etrafa geldiği anda işlemlere ulaşır.
Gilles 'SO- kötülük'

@Gilles, bir zombinin çocuklarını zombi gidene kadar ertelemeye karar veren bir yerde bazı (muhtemelen kinemortofobik) olabilir mi?
muru

Ayrıca Gilles unix.stackexchange.com/a/177361/5132 adresini hatırlatmak da isteyebilirsiniz . Şimdi neredeyse 4 yıl. ☺
JdeBP
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.