Membunuh Executable Selepas Penamatan Proses dalam Go
Apabila menjalankan executable berasingan dalam thread Golang, adalah penting untuk memastikan bahawa executable ini ditamatkan pada proses utama dibunuh. Ini boleh timbul daripada tindakan pengguna atau faktor luaran lain.
Penyelesaian:
Terdapat dua pendekatan utama untuk mencapai perkara ini:
1 . Penamatan Kumpulan Proses:
Buat proses anak dalam kumpulan proses yang sama seperti proses utama. Apabila proses utama dimatikan, keseluruhan kumpulan proses, termasuk anak boleh laku, akan ditamatkan.
2. Panggilan Sistem Pdeathsig:
Gunakan fungsi syscall.SetProcAttr untuk menetapkan atribut Pdeathsig untuk proses anak. Atribut ini menentukan isyarat yang akan dihantar kepada proses anak apabila proses induk keluar. Dengan menetapkannya kepada nilai seperti syscall.SIGTERM, anda boleh memastikan proses anak ditamatkan dengan bersih.
Contoh:
cmd := exec.Command("./long-process") cmd.SysProcAttr = &syscall.SysProcAttr{ Pdeathsig: syscall.SIGTERM, }
Pertimbangan Tambahan:
Dengan melaksanakan pendekatan ini, anda boleh memastikan bahawa mana-mana boleh laku yang dipanggil oleh proses Golang anda dimatikan apabila proses itu sendiri ditamatkan, membenarkan untuk penamatan proses bersih dan mencegah proses yatim.
Atas ialah kandungan terperinci Bagaimana untuk Memastikan Executable Kanak-kanak Ditamatkan Apabila Proses Go Parent Dibunuh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!