Intercepting Ctrl-C Events in C
捕捉Ctrl-C 事件是編程中的必要任務,尤其是在您希望對意外中斷做出優雅回應的情況下。
使用 Sigaction
在 C 中,使用 sigaction 函數來處理訊號更可靠。其文法如下:
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
其中:
在 Thomas 給出的範例中,sigaction 架構如下:
struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0;
其中:
將此sigaction 結構與SIGINT 訊號一起使用:
sigaction(SIGINT, &sigIntHandler, NULL);
處理程序函數
最後,您需要一個處理程序函數來回應訊號。在範例中,my_handler 僅列印一則訊息並退出程式:
void my_handler(int s){ printf("Caught signal %d\n", s); exit(1); }
完整程式碼
以下是使用 sigaction 用來捕捉 Ctrl-C 事件的完整程式碼:
#include#include #include #include void my_handler(int s){ printf("Caught signal %d\n",s); exit(1); } int main(int argc,char** argv) { struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, NULL); pause(); return 0; }
透過使用 sigaction,您可以可靠地捕捉 Ctrl-C 事件並採取適當的措施。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3