#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
/*
* SIGHUP: 从终端上发出的结束信号
* SIGINT: 来自键盘的中断信号(Ctrl-C)
* SIGQUIT:来自键盘的退出信号(Ctrl-\)
* SIGFPE: 浮点异常信号(例如浮点运算溢出)
* SIGKILL:该信号结束接收信号的进程
* SIGALRM:进程的定时器到期时,发送该信号
* SIGTERM:kill 命令发出的信号
* SIGCHLD:标识子进程停止或结束的信号
* SIGSTOP:来自键盘(Ctrl-Z)或调试程序的停止执行信号
*/
void my_func(int sign_no)
{
if (sign_no == SIGINT)
printf("I have get SIGINT\n");
else if (sign_no == SIGQUIT)
printf("I have get SIGQUIT\n");
}
int main()
{
printf("Waiting for signal SIGINT OR SIGQUIT\n");
signal(SIGINT, my_func);
signal(SIGQUIT, my_func);
pause();
exit(0);
return 0;
}
cc mysignal.c -o mysignal -g
./mysignal
Waiting for signal SIGINT OR SIGQUIT
ctrl+c
I have get SIGINT
Waiting for signal SIGINT OR SIGQUIT
ctrl+\
I have get SIGQUIT