码迷,mamicode.com
首页 > 其他好文 > 详细

第13课-信号通讯

时间:2015-04-16 21:27:18      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

1.信号:在Linux中信号也是最为古老的通信机制
2.信号处理流程:
(1)选择信号
(2)发送信号
(3)处理信号
技术分享
3.信号类型:
技术分享
(1)SIGHUP:终端发出的结束信号
(2)SIGINT:键盘中断信号
(3)SIGKILL:结束接收信号的进程(杀死进程)
(4)SIGTERM:kill命令发出的信号
(5)SIGSTOP:暂停进程
(6)SIGCHLD:子进程停止或结束的时候用来通知父进程
4.忽略信号:有些信号可以被忽略,但是SIGKILL和SIGSTOP不可忽略,他们是要终止和停止进程。
5.执行用户希望的操作:内核响应信号的时候调用相应的用户函数。
6.执行默认操作:大多是终止进程
7.函数学习

6.1 发送信号

6.1.1 函数名
Kill
6.1.2 函数原形
int kill(pid_t pid, int sig);
6.1.3 函数功能
向进程发送信号
6.1.4 所属头文件
<sys/types.h>
<signal.h>
6.1.5 返回值
成功:返回0
失败:-1
6.1.6 参数说明
Pid大于0的时候指向接收信号的进程
sig指明要发送的信号(上述信号类型)

6.2 处理信号

6.2.1 函数名
Signal
6.2.2 函数原形
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
6.2.3 函数功能
设置信号的处理方式(处理函数)
6.2.4 所属头文件
<signal.h>
6.2.5 返回值
成功:返回处理函数的指针
失败:SIG_ERR
6.2.6 参数说明
Signum指定要处理的信号
Handler处理信号的函数指针。可以取值:SIG_IGN,SIG_DFL,具体函数名


8.补充:
(1)kill函数式自己对自己或者自己对别人都可以,但是raise函数只能自己对自己发信号。
(2)kill函数的pid:
--》大于0:发送给PID指定的进程
--》等于0:发送给同组进程
--》小于0:发送给同进程组ID为|PID|的进程
--》等于-1:发送给所有进程


(3)raise原型:
int raise(int sign0)


(4)pause函数:使进程挂起,直到捕捉到信号,只有执行了一个信号处理函数以后,才会结束挂起。


(5)atoi(char * str)将字符串转换为整数。




9.接收信号的进程
(1)设置信号处理方式
(2)等待信号接收(信号捕捉),要用到PAUSE函数




10.发送进程:发送进程

第13课-信号通讯

标签:

原文地址:http://www.cnblogs.com/YanfeiHao/p/4433011.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!