网站地图    收藏   

主页 > 系统 > linux系统 >

LINUX学习笔记13——进程间通信2信号 - Linux操作系

来源:自学PHP网    时间:2015-04-14 11:51 作者: 阅读:

[导读] a) 产生:按键,硬件异常,kill函数发送信号b) 常见信号:1. SIGHUP:结束信号2. SIGINT:中断信号ctrl+c3. SIGKILL:结束接收信号的进程4. SIGTERM:KILL命令发出的信号5. SIGCHLD:标志子进程停止或结束的...

a)         产生:按键,硬件异常,kill函数发送信号
 
b)         常见信号:
 
1.         SIGHUP:结束信号
 
2.         SIGINT:中断信号ctrl+c
 
3.         SIGKILL:结束接收信号的进程
 
4.         SIGTERM:KILL命令发出的信号
 
5.         SIGCHLD:标志子进程停止或结束的信号
 
6.         SIGSTOP:停止信号
 
c)         信号处理:
 
1.         忽略此信号:除了SIGKILL, SIGSTOP
 
2.         执行用户希望的动作:
 
3.         执行系统默认的动作:
 
d)         发送信号:
 
1.         Kill:可以给自己发,也可以给别人发信号
 
a)         Int kill(pid_t pid, int signo);
 
b)         #include<sys/types.h>
 
#include<signal.h>
 
c)         Pid:
 
1.         >0:将信号发给ID为pid的进程
 
1.         ==0:发给同组的进程
 
2.         <0:发给其他组ID等于pid绝对值的进程
 
3.         ==-1发给所有进程
 
d)         注意:在程序中使用以上函数,在程序外可以使用kill指令发送信号
 
1.         例:Kill –s SIGINT pid
 
2.         查看进程号:ps aux
 
2.         Raise:只能给自己发
 
a)         Int raise(int signo)
 
b)         #include<sys/types.h>
 
c)         #include<signal.h>
 
3.         alarm:设定时间,到时产生SIGALARM信号,不捕捉,默认终止
 
a)         unsigned int alarm(unsigned int seconds)
 
1.         #include<unistd.h>
 
4.         Pause:进程挂起直到捕捉到一个信号,类似于wait(子进程退出)
 
a)         Int pause(void)
 
1.         #include<unistd.h>
 
e)         信号处理函数:
 
1.         Sighandler_t signal(int signo, void(*func)(int))
 
a)         Func可能值:
 
1.         SIG_IGN:忽略此信号
 
2.         SIG_DFL:按系统默认方式处理
 
3.         信号处理函数名:使用该函数处理,func的参数是整形
 
b)         #include<signal.h>
 
c)         例:signal(SIGINT, my_func);
 
1.         为SIGINT信号注册信号处理函数。
 
d)         注意:注册函数后,并不是马上执行该函数,而是等待信号来时再执行该函数。因此需要关注信号注册函数的位置,在该位置以后才能捕捉该信号。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论