Anda tidak dapat mengontrolnya dengan sinyal; hanya proses induknya yang dapat mengontrolnya, dengan memanggil waitpid()
atau mengatur penangan sinyal untuk SIGCHLD
. Lihat SIGCHLD
dan SA_NOCLDWAIT
di sigaction(2)
halaman manual untuk detail.
Juga, apa yang terjadi pada utas anak bergantung pada versi kernel Linux. Dengan utas POSIX 2.6, mematikan utas utama akan menyebabkan utas lainnya keluar dengan bersih. Dengan 2.4 LinuxThreads, setiap utas sebenarnya merupakan proses terpisah dan SIGKILL
tidak memberikan utas root kesempatan untuk memberi tahu yang lain untuk dimatikan, sedangkan SIGTERM
tidak.
Jika Anda mematikan proses root (proses induk), ini akan membuat anak yatim piatu, bukan anak zombie. anak yatim dibuat ketika Anda membunuh induk proses, dan kernel menjadikan init sebagai induk dari anak yatim. init seharusnya menunggu sampai anak yatim mati, lalu gunakan tunggu untuk membersihkannya.
Anak-anak zombie dibuat saat proses (bukan induknya) berakhir dan induknya tidak menggunakan status keluarnya dari tabel proses.
Kedengarannya seperti Anda khawatir meninggalkan anak yatim piatu karena menurut definisi, ketika Anda membunuh proses induk zombie, anak zombie itu sendiri akan mati.
Untuk membunuh anak yatim Anda, gunakan kill -9 , yang setara dengan SIGKILL.
Berikut adalah tutorial yang lebih mendalam untuk mematikan barang di linux:http://riccomini.name/posts/linux/2012-09-25-kill-subprocesses-linux-bash/