editor php Yuzai akan memperkenalkan kepada anda cara untuk membunuh proses anak apabila menamatkan proses utama dalam bahasa Go. Dalam pembangunan, kita sering menghadapi situasi di mana kita perlu menjalankan beberapa proses kanak-kanak pada masa yang sama. Walau bagaimanapun, apabila proses utama tamat, jika proses anak tidak ditamatkan dengan betul, kebocoran sumber atau masalah lain mungkin berlaku. Oleh itu, adalah sangat penting untuk menguasai cara membunuh proses anak dengan betul apabila menamatkan proses utama dalam bahasa Go. Dalam artikel berikut, kami akan memperkenalkan beberapa kaedah biasa untuk mencapai matlamat ini dan membincangkan kelebihan dan kekurangannya.
Saya ingin menamatkan proses anak apabila proses utama tamat.
Saya menggunakan exec.Command() untuk menjalankan proses anak
Tetapi proses utama mungkin ditamatkan dengan ralat yang tidak dijangka, jadi saya ingin memastikan proses anak ditamatkan juga.
Bagaimana untuk mengarkib dalam bahasa Go?
Anda mungkin mahu menggunakan commandcontext
sebaliknya dan membatalkan konteks utama apabila proses itu ditamatkan. Berikut ialah dua contoh: yang pertama ialah demonstrasi mudah untuk menamatkan proses selepas tamat masa yang singkat, dan yang kedua ialah menamatkan proses anak apabila proses menangkap isyarat penamatan luaran daripada sistem pengendalian:
package main import ( "context" "os/exec" "time" ) func main() { // terminate the command based on time.Duration ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond) defer cancel() if err := exec.CommandContext(ctx, "sleep", "5").Run(); err != nil { // This will fail after 100 milliseconds. The 5 second sleep // will be interrupted. } // or use os signals to cancel the context ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt) defer stop() }
Atas ialah kandungan terperinci Bagaimana untuk membunuh proses kanak-kanak apabila menamatkan proses utama dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!