Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah mungkin untuk menangkap isyarat Ctrl+C (SIGINT) dan menjalankan fungsi pembersihan secara "tertunda"?

Adakah mungkin untuk menangkap isyarat Ctrl+C (SIGINT) dan menjalankan fungsi pembersihan secara "tertunda"?

PHPz
PHPzke hadapan
2024-02-08 23:18:331054semak imbas

是否可以捕获 Ctrl+C 信号 (SIGINT) 并以“延迟”方式运行清理函数?

editor php Yuzai akan menjawab soalan biasa untuk semua orang dalam artikel ini: "Adakah mungkin untuk menangkap isyarat Ctrl+C (SIGINT) dan menjalankan fungsi pembersihan dalam cara 'tertunda' semasa menulis skrip PHP , kami selalunya perlu mengendalikan beberapa operasi pembersihan, seperti menutup sambungan pangkalan data, mengeluarkan sumber, dsb. Apabila pengguna menekan kombinasi kekunci Ctrl+C, isyarat gangguan sistem SIGINT dicetuskan, menyebabkan skrip ditamatkan serta-merta. Tetapi bagaimana jika kita ingin melakukan beberapa pembersihan sebelum skrip ditamatkan? Mari kita bincangkan bersama!

Kandungan soalan

Saya mahu menangkap isyarat Ctrl+C (SIGINT) yang dihantar daripada konsol dan mencetak beberapa jumlah separa berjalan. SIGINT) 信号并打印出一些部分运行总计。

解决方法

您可以使用 os/signal 包来处理传入信号。 ctrl+csigint,这样你就可以用它来捕获os.interrupt

Penyelesaian

Anda boleh menggunakan pakej os/signal untuk mengendalikan isyarat masuk. 🎜ctrl🎜+🎜c🎜 ialah signin, jadi anda boleh menggunakannya untuk menangkap os .interrupt. 🎜
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
go func(){
    for sig := range c {
        // sig is a ^C, handle it
    }
}()
🎜Cara anda membuat program ditamatkan dan mencetak maklumat terpulang kepada anda sepenuhnya. 🎜

Atas ialah kandungan terperinci Adakah mungkin untuk menangkap isyarat Ctrl+C (SIGINT) dan menjalankan fungsi pembersihan secara "tertunda"?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam