如何在 C++ 中捕獲 Ctrl+C 事件?


CTRL + C 用於向當前執行的任務傳送中斷。在這個程式中,我們將瞭解如何使用 C++ 捕獲 CTRL + C 事件。

CTRL + C 是 C 或 C++ 中的一個訊號。所以我們可以透過捕獲訊號技術捕獲。對於此訊號,程式碼是 SIGINT(中斷訊號)。此處透過 signal() 函式捕獲了訊號。然後將回調地址傳遞給在獲取訊號之後呼叫函式。

請參閱程式以獲得更好的想法。

示例

#include <unistd.h>
#include <iostream>
#include <cstdlib>
#include <signal.h>
using namespace std;
// Define the function to be called when ctrl-c (SIGINT) is sent to process
void signal_callback_handler(int signum) {
   cout << "Caught signal " << signum << endl;
   // Terminate program
   exit(signum);
}
int main(){
   // Register signal and signal handler
   signal(SIGINT, signal_callback_handler);
   while(true){
      cout << "Program processing..." << endl;
      sleep(1);
   }
   return EXIT_SUCCESS;
}

輸出

$ g++ test.cpp
$ ./a.out
Program processing...
Program processing...
Program processing...
Program processing...
Program processing...
Program processing...
^CCaught signal 2
$

更新於: 2019 年 7 月 30 日

12K+ 檢視

啟動您的職業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.