基本进程通信--信号
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-05-18
act,oldact;
act.sa_handler = usr1_handler; act.sa_flags = SA_NODEFER|SA_RESETHAND; //SA_RESETHAND:捕获信号完成处理后,将信号处理恢复为默认处理;SA_NODEFER:完成信号处理之前如果再次收到信号,不做处理 sigaction(SIGUSR1,&act,&oldact); //对信号SIGUSR1更改默认处理方式,处理调用函数usr1_handler for(i=1;i<12;i ) { printf("signal %d handler is:",i); sigaction(i,NULL,&oldact); //act=NULL,检查而已 signal_process_info(&oldact); //打印信号处理方式 } return 0; } 执行结果: gaolu@gaolu-desktop:~$ gaolu@gaolu-desktop:~$ gcc -o sig2 systemcall2.c systemcall2.c: In function main systemcall2.c:37: warning: assignment from incompatible pointer type gaolu@gaolu-desktop:~$ gaolu@gaolu-desktop:~$ gaolu@gaolu-desktop:~$ gaolu@gaolu-desktop:~$ gaolu@gaolu-desktop:~$ ./sig2 signal 1 handler is:using default handler. signal 2 handler is:using default handler. signal 3 handler is:using default handler. signal 4 handler is:using default handler. signal 5 handler is:using default handler. signal 6 handler is:using default handler. signal 7 handler is:using default handler. signal 8 handler is:using default handler. signal 9 handler is:using default handler. signal 10 handler is:use handler: c0000000. signal 11 handler is:using default handler. gaolu@gaolu-desktop:~$ ************************************************************************************* 信号值小于SIGRTMIN的信号都是不可靠信号.对于UNIX系统而言,不可靠信号的含义有2个: (1)可能对信号采用错误的处理 捕捉到不可靠信号并处理以后,可能将信号的处理方法恢复到系统默认的处理方法.因此每次处理以后,都要重新设置信号处理函数. 拥有帝国一切,皆有可能。欢迎访问phome.net(2)存在信号丢失的可能 比如sleep()或者pause()时可能捕捉不到信号. 在Linux系统下,不可靠信号仅指信号的丢失,系统对不可靠信号机制做了改进,不需要重新设置信号处理函数. 考虑到代码的可移植性,使用较多的是sigaction()函数. ************************************************************************************** 拥有帝国一切,皆有可能。欢迎访问phome.net |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于基本进程通信--信号的所有评论