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中文网其他相关文章!