7 信号通信2
来源:互联网 发布:彩通网络小额贷款牌照 编辑:程序博客网 时间:2024/06/01 07:40
0. 信号通信框架:
信号发送:kill、raise、alarm
信号接收:pause()、sleep、while(1);
信号处理:signal
1. 信号的发送函数:
kill:发送信号给任意进程
raise:只能发送给当前进程,等于kill(getpid(),sig)
alram:发送闹钟信号
2. kill函数:
头文件: #include <signal.h>
#include <sys/types.h>
函数原型: int kill(pid_t pid, int sig)
参数: pid: 正数,要接收信号的进程号;
0,信号被发送到与pid进程相同的进程组中;
-1,信号发送给所有的进程表中的进程
sig: 信号
返回: 成功0,错误-1
3. raise函数:
头文件: #include <signal.h>
#include <sys/types.h>
函数原型: int raise(int sig)
参数: sig,信号
返回: 成功0,错误-1
4. 实例 rasie函数:
#include "stdio.h"#include "sys/types.h"#include "signal.h"#include "stdio.h"#include "stdlib.h"int main(){ printf("raise before"); raise(9);// _exit() exit() printf("raise after\n"); return 0;}执行结果:
alex@alex-virtual-machine:/extra/process/007$ gcc raise.calex@alex-virtual-machine:/extra/process/007$ ./a.outKilledalex@alex-virtual-machine:/extra/process/007$
5. 示例二:子进程收到信号后会进入Stop状态,8s之后父进程杀死子进程,并通过wait函数会回收资源,使子进程不会进入僵死状态
#include "stdio.h"#include "sys/types.h"#include "signal.h"#include "stdio.h"#include "stdlib.h"int main(){ pid_t pid; pid=fork(); if(pid > 0 )//parent { sleep(8);if(waitpid(pid,NULL,WNOHANG) == 0){ kill(pid,9);}wait(NULL);while(1); } if(pid == 0)//child { printf("raise function before\n"); raise(SIGTSTP); printf("raise funtion after\n"); exit(0); } return 0;}
执行结果:
开始执行时:
4117 4566 4566 4117 pts/6 4566 S+ 1000 0:00 ./a.out 4566 4567 4566 4117 pts/6 4566 T+ 1000 0:00 ./a.out 4044 4568 4568 4044 pts/5 4568 R+ 1000 0:00 ps -axjalex@alex-virtual-machine:/extra/process$
8s之后:
1991 4530 1991 1991 ? -1 S 130 0:00 pickup -l -t unix -u -c 4117 4566 4566 4117 pts/6 4566 R+ 1000 0:25 ./a.out 4044 4573 4573 4044 pts/5 4573 R+ 1000 0:00 ps -axjalex@alex-virtual-machine:/extra/process$
0 0
- 7 信号通信2
- 信号通信2
- 2-15 信号通信编程
- 信号通信
- 信号通信
- 信号通信
- 信号通信
- 信号通信
- 信号通信
- 进程通信-信号通信
- Linux进程间通信(2):信号
- Linux进程通信(2):信号(下)
- Linux进程通信(2):信号(上)
- 进程间通信(2) - 信号(signal)
- 进程间通信方式(2)---信号
- 进程通信之信号通信
- 信号通信(进程间通信)
- Linux进程通信--信号
- 快速排序算法
- 读取和打印apk版本号工具类
- RecyclerView的简单使用
- ZCMU-1827-区间k大数查询
- 安装Nginx教程[window和linux下]
- 7 信号通信2
- 时间转换处理工具类
- Linux总结分析
- 【Bug-python】IndexError: list index out of range
- 2016年末日常点滴总结和近期阅读书单
- JAVA之sort()排序特例
- Android音视频学习第6章:视频直播实现完整代码
- 模板:policy类的简单使用
- 配置Eclipse编写HTML/JS/CSS/JSP页面的自动提示。