編寫一個在按下 Ctrl+C 時不會終止的 C 程式


在本節中,我們將學習如何編寫一個在按下 Ctrl + C 鍵時不會終止的 C 程式。

Ctrl + C 會生成鍵盤中斷,並停止當前程序的執行。在這裡,當我們按下 Ctrl + C 鍵時,它將列印一條訊息然後繼續執行。要使用此功能,我們將使用 C 中的訊號處理技術。按下 Ctrl + C 時會生成 SIGINT 訊號。以下列表中還有一些其他的訊號及其功能。

訊號
描述
SIGABRT
指示異常終止
SIGFPE 
指示浮點異常
SIGILL 
指示無效指令。
SIGINT 
指示傳送到程式的互動式關注請求。
SIGSEGV 
指示無效記憶體訪問。
SIGTERM 
指示傳送到程式的終止請求。


這裡我們將使用標準 C 庫函式 signal() 來處理這些訊號。

示例程式碼

#include <stdio.h>
#include <signal.h>
void sigint_handler(int signum) { //Handler for SIGINT
   //Reset handler to catch SIGINT next time.
   signal(SIGINT, sigint_handler);
   printf("Cannot be stopped using Ctrl+C 
");    fflush(stdout); } main () {    signal(SIGINT, sigint_handler);    while(1) { //create infinite loop    } }

輸出

Cannot be stopped using Ctrl+C
Cannot be stopped using Ctrl+C

更新於:2019年7月30日

1K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.