在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