Intercepting Ctrl-C Events in C
捕捉 Ctrl-C 事件是编程中的一项必要任务,尤其是在您希望对意外中断做出优雅响应的情况下。
使用 Sigaction
在 C 中,使用 sigaction 函数来处理信号更可靠。其语法如下:
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
其中:
在 Thomas 给出的示例中,sigaction 结构如下:
struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0;
其中:
将此 sigaction 结构与 SIGINT 信号一起使用:
sigaction(SIGINT, &sigIntHandler, NULL);
处理程序函数
最后,您需要一个处理程序函数来响应信号。在示例中,my_handler 仅打印一条消息并退出程序:
void my_handler(int s){ printf("Caught signal %d\n", s); exit(1); }
完整代码
以下是将 sigaction 用于捕捉 Ctrl-C 事件的完整代码:
#include#include #include #include 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; }
通过使用 sigaction,您可以可靠地捕捉 Ctrl-C 事件并采取适当的措施。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3