C++ signal 在命令行接收 Ctrl+C 终止程序

signal 函数介绍

#include 
#include   // 引入头文件

using namespace std;

static volatile int keepRunning = 1;

void sig_handler(int sig) {
    if (sig == SIGINT) {
        keepRunning = 0;
    }
}

int main() {

    signal(SIGINT, sig_handler); // SIGINT 信号由 InterruptKey 产生,通常是 CTRL +C 或者 DELETE

    while (keepRunning) {
        cout << "hahah" << endl;
    }

    cout << "Terminated by Ctrl+C signal." << endl;
}

命令行执行这个死循环程序,接收 Ctrl + C 停止。
可以作为 OpenCV waitKey 替代品。

注意:如果是多线程程序,signal(SIGINT, sig_handler) 需要写在想要终止的那个线程里,只写在 main 函数不行。

你可能感兴趣的:(C++ signal 在命令行接收 Ctrl+C 终止程序)