简单信号处理
#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;
#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
總結
- 上一篇: 流管道
- 下一篇: sigaction函数使用实例