Ön planda çalışan bir alt işlemim var ve babası zaten çıkıldı.Çocuk arka planda başlatılırsa ve üst öğe zaten çıkarsa ana işlemi nasıl öğrenebiliriz?
çabuk aşağıdaki komut dosyalarını kullanabilirsiniz ebeveyn zaten çıkıldı ise proc/$pid/stat
dosya artık üst pid içermez ve
linux$cat /proc/6267/stat
6267 (test3.sh) S 1 6265 ......
# ^
# |
# I expected to get the origin parent pid but I get 1
Bu davranışı yeniden oluşturmak için yerine kökenli üst pid 1 gösterilecek
test2.sh
#!/bin/sh
echo "test2=$$"
./test3.sh &
test3.sh
#!/bin/sh
echo "test3=$$"
sleep 1000
yürütme:
linux$ ./test2.sh
test2=6318
test3=6319
linux$ ps aux | grep test
6319 root 1484 S {test3.sh} /bin/sh ./test3.sh
linux$ cat /proc/6319/stat
6319 (test3.sh) S 1 6318 2138 34816 6.......
Evet, yetim işlemleri "init" (pid '1') tarafından" benimsenir ". Bu tasarım gereğidir ve benim bilgime göre, ana işlem çıktıktan sonra orijinal ana pideyi kurtarmanın bir yolu yoktur. –
... ve eğer bir şekilde kludge yaptıysanız, pids eninde sonunda geri dönüştürülür, böylece bu rakam sizin düşündüğünüz anlamına gelmeyebilir. – jthill