Menangkap Isyarat di Golang
Dalam sesetengah senario, anda mungkin perlu melaksanakan pembungkus proses di Golang yang memantau dan menangkap isyarat yang dijana oleh proses yang dilancarkan. Pembalut proses harus melancarkan proses dan mengendalikan isyarat seperti SIGKILL dan SIGTERM.
Melancarkan Proses
Untuk melancarkan proses, anda boleh menggunakan fungsi syscall.Exec . Fungsi ini membolehkan anda melaksanakan arahan dan mengubah hala strim input dan outputnya. Berikut ialah contoh:
func launchCmd(path string, args []string) { err := syscall.Exec(path, args, os.Environ()) if err != nil { panic(err) } }
Menangkap Isyarat
Dalam Go, anda boleh menggunakan pakej isyarat untuk menangkap isyarat yang dihantar kepada proses anda. Fungsi signal.Notify membolehkan anda mendaftarkan saluran yang akan menerima pemberitahuan untuk isyarat yang ditentukan. Contohnya:
sigc := make(chan os.Signal, 1) signal.Notify(sigc, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) go func() { s := <-sigc // ... do something ... }()
Dalam kod ini, sigc ialah saluran yang akan menerima isyarat daripada jenis isyarat yang ditentukan. Anda boleh menggunakan pernyataan pilihan untuk mendengar isyarat pada saluran ini dan melakukan tindakan yang sesuai.
Nota Tambahan
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menangkap dan Mengendalikan Isyarat daripada Proses yang Dilancarkan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!