信号编程实例:
#include<string.h>
#include<stdio.h>
#include<errno.h>
#include<signal.h>
void handler(int num)
{
printf("recv num:%d \n",num);
if(num==SIGQUIT)//这个函数的参数是一个信号值,是由终端发送给内核,然后内核传递给进程的handler()函数。
{
exit(0);
}
else if(num==SIGINT)
{
//当SIGINT信号发生时,。。。。。
}
}
//信号异步通知事件。。。。。(我的应用程序dm01)可以随时被信号机制中断
//如果我写了一个信号处理函数handler
//那么当信号发生时,会自动调用我写的信号处理函数
void main()
{
//注册一个信号
//SIGINT 是Ctrl +c 会产生2号信号,。。中断应用程序
signal(SIGINT,handler);//注册了一个SIGINT信号,和该信号处理函数
signal(SIGQUIT,handler);//再次注册了一个SIGQUIT信号,和他的处理函数
while(1)
{
pause();
}
printf("main ...begin\n");
}
//请问,当信号发生时,handler()函数是被谁调用的???
//当信号发生时,这个函数 是被Linux内核调用的。
#include<string.h>
#include<stdio.h>
#include<errno.h>
#include<signal.h>
void handler(int num)
{
printf("recv num:%d \n",num);
if(num==SIGQUIT)//这个函数的参数是一个信号值,是由终端发送给内核,然后内核传递给进程的handler()函数。
{
exit(0);
}
else if(num==SIGINT)
{
//当SIGINT信号发生时,。。。。。
}
}
//信号异步通知事件。。。。。(我的应用程序dm01)可以随时被信号机制中断
//如果我写了一个信号处理函数handler
//那么当信号发生时,会自动调用我写的信号处理函数
void main()
{
//注册一个信号
//SIGINT 是Ctrl +c 会产生2号信号,。。中断应用程序
signal(SIGINT,handler);//注册了一个SIGINT信号,和该信号处理函数
signal(SIGQUIT,handler);//再次注册了一个SIGQUIT信号,和他的处理函数
while(1)
{
pause();
}
printf("main ...begin\n");
}
//请问,当信号发生时,handler()函数是被谁调用的???
//当信号发生时,这个函数 是被Linux内核调用的。