在Linux系统中,用户可以通过编写程序来捕获并处理Ctrl+C组合键发送的SIGINT信号。
使用Shell脚本捕获Ctrl+C
(图片来源网络,侵删)
在Shell脚本中,可以使用trap
命令来捕获和处理信号。
#!/bin/bash function onCtrlC() { echo 'Ctrl+C is captured' } trap 'onCtrlC' SIGINT while true; do echo 'I am working!' sleep 1 done
在这个脚本中,当按下Ctrl+C时,会触发onCtrlC
函数,输出“Ctrl+C is captured”。
使用C语言捕获Ctrl+C
在C语言中,可以使用signal
函数或sigaction
函数来捕获Ctrl+C信号。
使用signal
函数
(图片来源网络,侵删)
#include <stdio.h> #include <unistd.h> #include <string.h> #include <signal.h> void fun_sig(int sig) { printf("sig = %d ", sig); // 第二次收到信号时,以默认的方式处理 signal(sig, SIG_DFL); } int main() { signal(SIGINT, fun_sig); // ctrl-c while (1) { printf("running... "); sleep(1); } return 0; }
使用sigaction
函数
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void my_handler(int s) { printf("Caught signal %d ", 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; }
在这两个例子中,当按下Ctrl+C时,都会调用注册的处理函数,执行自定义逻辑。
各位小伙伴们,我刚刚为大家分享了有关linux ctrl c 捕获的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
(图片来源网络,侵删)
本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/71300.html