首页 >后端开发 >C++ >在 C 中处理 Ctrl-C 事件的最可靠方法是什么?

在 C 中处理 Ctrl-C 事件的最可靠方法是什么?

原创
2024-11-15 17:26:03860浏览

What's the most reliable way to handle Ctrl-C events in C  ?

C 中可靠的 Ctrl-C 处理

问题:

我们如何优雅地捕获C 中的 Ctrl-C 事件?

响应:

虽然使用信号是一种常见的方法,但它在不同的实现中并不总是可靠的。更稳健的方法建议使用 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); // or perform other necessary actions
}

int main() {
  struct sigaction sigIntHandler;

  sigIntHandler.sa_handler = my_handler;
  sigemptyset(&sigIntHandler.sa_mask);
  sigIntHandler.sa_flags = 0;

  sigaction(SIGINT, &sigIntHandler, NULL);

  pause(); // block the main thread until a Ctrl-C signal is received

  return 0;
}

在此修改后的代码中,我们使用 sigaction 注册信号处理函数 my_handler。当收到 Ctrl-C (SIGINT) 信号时执行此函数。通过使用 sigaction,我们可以更好地控制信号处理机制,使我们的事件捕获更加可靠。

以上是在 C 中处理 Ctrl-C 事件的最可靠方法是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn