首页 > 后端开发 > C++ > 正文

如何在 C 中优雅地处理 Ctrl-C 事件?

Mary-Kate Olsen
发布: 2024-11-11 01:47:02
原创
168 人浏览过

How to Gracefully Handle Ctrl-C Events in C  ?

在 C 中捕获 Ctrl-C 事件

在 C 中,捕获 Ctrl-C (SIGINT) 事件对于处理程序正常终止至关重要。信号库为此提供了一种简单的机制,但其可靠性因不同的实现而异。

为了确保行为一致,建议使用 sigaction 函数。下面是使用 sigaction 的 Tom 代码的修订版本:

#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

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;
}
登录后复制

此代码定义了一个信号处理程序 my_handler,它在收到 SIGINT 信号 (Ctrl-C) 时打印一条消息并退出程序。 sigaction 函数注册 SIGINT 信号的处理程序,并设置正确行为所需的标志。

现在,当程序运行并按下 Ctrl-C 时,它将捕获信号并调用处理程序,这依次打印适当的消息并优雅地终止程序。

以上是如何在 C 中优雅地处理 Ctrl-C 事件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板