Anak dapat meminta kernel untuk mengirimkan SIGHUP
(atau sinyal lain) ketika orang tua meninggal dengan menentukan opsi PR_SET_PDEATHSIG
di prctl()
syscall seperti ini:
prctl(PR_SET_PDEATHSIG, SIGHUP);
Lihat man 2 prctl
untuk detailnya.
Sunting:Ini hanya untuk Linux
Saya telah mencapai ini di masa lalu dengan menjalankan kode "asli" di "anak" dan kode "memunculkan" di "induk" (yaitu:Anda membalikkan pengertian tes yang biasa setelah fork()
). Kemudian jebak SIGCHLD dalam kode "yang dimunculkan"...
Mungkin tidak mungkin dalam kasus Anda, tetapi lucu jika berhasil.
Saya mencoba memecahkan masalah yang sama, dan karena program saya harus berjalan di OS X, solusi khusus Linux tidak bekerja untuk saya.
Saya sampai pada kesimpulan yang sama dengan orang lain di halaman ini -- tidak ada cara yang kompatibel dengan POSIX untuk memberi tahu seorang anak ketika orang tuanya meninggal. Jadi saya membuat hal terbaik berikutnya -- mengadakan jajak pendapat anak.
Ketika proses induk mati (karena alasan apa pun) proses induk anak menjadi proses 1. Jika anak hanya memilih secara berkala, ia dapat memeriksa apakah induknya adalah 1. Jika ya, anak harus keluar.
Ini tidak bagus, tetapi berhasil, dan lebih mudah daripada solusi pemungutan suara soket/lockfile TCP yang disarankan di tempat lain di halaman ini.