庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>操作系统>Linux>系统管理>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

Linux的信号机制

 作者:本站收集   日期:2005-4-12
字号选择〖 〗/ 双击滚屏 单击停止   
信号是unix中所使用的进程通信的一种最古老的方法.系统使用它来同志一个或多个进程异步事件的发生.

linux系统库bits/signum.h对信号名作了定义:
linux的大多数信号是提供给内核的,仅有少数几种信号可以在信号间发送.

.SIGHUP 当终止一个终端时,内核就把这种信号发送给该终端所控制的所有进程.
.SIGINT 当一个用户按下中断键(ctrl+c)后,内核就向该终端用关联的所有进程发送这个信号.
.SIGQUIT 当用户按下(ctrl+),内核就向该终端用关联的所有进程发送这个信号.
.SIGILL 当一个进程企图执行一条非法指令时,内核就发送这个信号.
.SIGFPE 当产生浮点错误时,内核就发送这个信号.
.SIGKILL 这是一个非常特殊的信号,他可以从一个进程发送到另一个进程,使接收到该信号的进程终止.内核偶然也发送这种信号.
.SIGALRM 当一个定时器到时的时候,内核就发送这个信号.
.SIGSTOP 子进程结束信号.UNIX用它来实现系统调用exit(),wait();


信号的处理
unix的系统调用signal()用于接受一个指定的信号,并可以指定相应的处理方法.

在linux系统库signal.h中,它的说明如下:
signal(int sig,sighandler_t handler);
sig用于指定信号类型.handle是用于处理该信号的函数.
handle还可以是:
.SIG_IGN 忽略这个信号.
.SIG_DFL 恢复对这个信号的默认处理.

例如:
#include
#include
#include

main(){
signal(SIGINT,SIG_IGN);
printf("hello!n");
sleep(10);
printf("hellon");
}
上面的代码忽略了SININT信号.

又例如:
#include
#include
#include

int catch(int sig);

main(){
signal(SIGINT,catch);
printf("hello!n");
sleep(10);
printf("hello!n");
}

int catch(int sig){
printf("catch signaln");
return 1;
}
当用户按下ctrl+c时,进程被中断,catch()被执行.中断处理函数处理完毕后,转回断点执行下面的指令.

当编写自己的中断处理函数时,注意下面两点:
1.信号不能打断系统调用.
2.信号不能打断信号处理函数.
上一篇:制作Linux RPM包    下一篇:Linux关机命令详解  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 本站收集
信息来源: 网络 录入时间: 2005-4-12
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿