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

signal 函数介绍

#include <iostream>
#include <csignal>  // 引入头文件

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 函数不行。

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容