Pengendalian Isyarat dan Pembersihan Menggunakan "Tunda"
Dalam pengaturcaraan, selalunya wajar untuk melakukan tindakan pembersihan atau pengendalian ralat apabila mengganggu sesuatu proses berjalan, seperti apabila pengguna menekan Ctrl C (SIGINT) untuk menamatkan program. Kata kunci "menangguhkan" menyediakan cara yang mudah untuk memastikan bahawa tindakan sedemikian dilaksanakan sebelum program keluar.
Menangkap Isyarat TANDATANGAN
Untuk menangkap isyarat SIGINT, anda boleh menggunakan pakej os/signal, yang menyediakan fungsi untuk mengendalikan masuk isyarat.
package main import ( "fmt" "os" "os/signal" ) // main function func main() { gracefulExit() } // Listen for and handle Ctrl+C (SIGINT) signal func gracefulExit() { // Create a channel to receive signals on sigs := make(chan os.Signal, 1) // Register SIGINT (Ctrl+C) signal handler signal.Notify(sigs, os.Interrupt) // Start a goroutine to listen for signals go func() { sig := <-sigs fmt.Printf("Received %v signal. Cleaning up and exiting...\n", sig) // Trigger cleanup actions using "defer" defer cleanup() defer saveResults() os.Exit(0) }() // Start running the program's main logic runProgram() }
Melaksanakan Tindakan Tangguh
Dalam goroutine pengendalian isyarat, sebelum menamatkan program, anda boleh menggunakan kata kunci tangguh untuk menentukan tindakan pembersihan yang akan dilaksanakan mengikut susunan terbalik pengisytiharan mereka. Dalam contoh di atas, fungsi cleanup() dan saveResults() akan dipanggil sebelum program keluar.
Menyesuaikan Gelagat Pembersihan
Tindakan pembersihan sebenar yang perlu dilakukan apabila isyarat SIGINT diterima akan berbeza-beza bergantung pada keperluan khusus program. Fleksibiliti ini menjadikan pengendalian isyarat dan pembersihan menggunakan "menangguhkan" teknik yang serba boleh dan berkesan untuk mengurus gangguan yang tidak dijangka dalam kod anda.
Atas ialah kandungan terperinci Bagaimanakah boleh 'menangguhkan' Memastikan Program Bersih Keluar pada Isyarat SIGINT dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!