下面来分析一下kill.c代码:
#include
#include
#include
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);
}
/*----------------------------------------
notes:
1.特定的信号与一定的进程相联系,也就是说,一个进程可以决定在该进程中需要
对哪些信号进行什么样的处理.
2.信号处理的主要方法有两种,一种是使用简单的signal函数,另一种是使用信号
集函数组.
3.signal()
1)函数说明
使用signal函数处理时,只需要把处理的信号和处理函数列出即可.它主要是用于前
32种非实时信号的处理.
2)函数格式
1]所需要的头文件:#include
2]函数原型 void (*signal(int signum,void (*handler)(int)))(int)
3]函数输入参数
signum:指定信号
handler:
SIG_IGN:忽略该信号'
SIG_DFL:采用系统默认方式处理信号
自定义的信号处理函数指针
4]函数返回值
成功:以前的信号处理配置
出错:-1.
3.实验:
[root@localhost the_eight_step]# gcc mysignal.c -o mysignal
[root@localhost the_eight_step]# ./mysignal
waiting for signal SIGINT or SIGQUIT
按ctrl+c显示
I have get SIGINT
-------------------------------------------*/
阅读(698) | 评论(1) | 转发(1) |