一、信号:在Linux系统中,信号(signal)同样也是最为古老的进程
间通信机制。
二、 信号处理流程:①选择信号②发送信号③处理信号
三、 信号类型:Linux系统支持的所有信号均定义在 /usr/include/asm/signal.h(展示),其中常见的信号有:
6.1 发送信号
阅读(33) | 评论(0) | 转发(0) |
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
二、 信号处理流程:①选择信号②发送信号③处理信号
三、 信号类型:Linux系统支持的所有信号均定义在 /usr/include/asm/signal.h(展示),其中常见的信号有:
- SIGKILL: 杀死进程
- SIGSTOP:暂停进程
- SIGCHLD:子进程停止或结束时用来通知父进程
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接收进程ID,0发送给所有进程组的进程。-1,发送给所有有发送权限的进程ID除了init进程。<-1,发送给所有进程组的-pid的进程。
Sig:要发送的信号,0的话不发送,单确认error来确认是否有进程。
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_DEL:交给内核处理
用户自定义的函数:交给用户自定义的函数来处理
a_signal.c:
b_signal.c:
a_signal.c:
- #include <sys/types.h>
- #include <signal.h>
- #include <stdio.h>
-
- void main(int argc, char *argv[])
- {
- pid_t pid;
- if(argc < 1)
- {
- printf("usage:a_signal [pid]\n");
- return;
- }
- pid = atoi(argv[1]);
- kill(pid,SIGINT);
-
- }
- #include <signal.h>
- #include <unistd.h>
-
- typedef void (*sighandler_t)(int);
-
- void myfunc(int a)
- {
- printf("Process B received SIGINT\n");
- }
-
- void main()
- {
- signal(SIGINT , myfunc);
- pause();
- }
给主人留下些什么吧!~~
评论热议