Rumah >pembangunan bahagian belakang >C++ >Apakah cara yang paling boleh dipercayai untuk mengendalikan acara Ctrl-C dalam C ?
Pengendalian Ctrl-C yang boleh dipercayai dalam C
Soalan:
Bagaimana kita boleh menangkap dengan anggun acara Ctrl-C dalam C ?
Respons:
Walaupun menggunakan isyarat ialah pendekatan biasa, ia tidak selalu boleh dipercayai merentas pelaksanaan yang berbeza. Kaedah yang lebih mantap disyorkan menggunakan sigaction.
Berikut ialah kod yang diubah suai berdasarkan contoh Tom:
#include <signal.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> void my_handler(int s) { printf("Caught signal %d\n", s); exit(1); // or perform other necessary actions } int main() { struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, NULL); pause(); // block the main thread until a Ctrl-C signal is received return 0; }
Dalam kod yang disemak ini, kami menggunakan sigaction untuk mendaftarkan fungsi pengendali isyarat, my_handler. Fungsi ini dilaksanakan apabila isyarat Ctrl-C (SIGINT) diterima. Dengan menggunakan sigaction, kami mendapat lebih kawalan ke atas mekanisme pengendalian isyarat, menjadikan penangkapan acara kami lebih dipercayai.
Atas ialah kandungan terperinci Apakah cara yang paling boleh dipercayai untuk mengendalikan acara Ctrl-C dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!