信号通讯编程
来源:互联网 发布:2016年达内java百度云 编辑:程序博客网 时间:2024/05/16 19:52
1.核心理论
信号类型:linux系统支持的所有信号均定义在/usr/include/asm/signal.h中,其中常见的信号有:
SIGKILL: 杀死进程
SIGSTOP: 暂停进程
SIGCHLD:子进程停止或结束时用来通知父进程
2.函数学习
发送信号
函数名:kill
函数原型:int kill(pid_t pid, int sig);
函数功能:向进程发送信号
头文件:<sys/types.h> <signal.h>
返回值:成功:0 失败:-1
参数说明:pid:pid>0时指明接收信号的进程 sig:指明需要发送的信号
处理信号
函数名:signal
函数原型:typedef void(*sighandler_t)(int)
sighandler_t signal(int signum, sighandler_t handler)
函数功能:设置信号的处理方式
头文件: <signal.h>
返回值:成功:返回处理函数指针 失败:SIG_ERROR
参数说明:signum:要处理的信号
handler:对应信号的处理方式,可以取值
1. SIG_IGN:忽略这个信号,不处理
2. SIG_DFL:交给内核去处理
3. 用户自定义的函数处理
3.综合实例
A,B进程利用信号通讯
/* bprocess.c */#include <signal.h>#include <unistd.h>#include <stdio.h>void myfunc(int a){printf("process B received SIGINT\n");}void main(){signal(SIGINT,myfunc);pause();}# gcc bprocess.c -o bprocess# ./bprocess此时这个进程处于等待信号的状态另开一个终端# ps aux 查看bprocess的ID为11227# kill -n SIGINT 11227发送后bprocess进程就会打印出process B received SIGINT
/* aprocess.c */#include <sys/types.h>#include <signal.h>#include <stdio.h>void main(int argc, char *argv[]){pid_t pid;pid = atoi(argv[1]);kill(pid,SIGINT);}# ./bprocess 此时处于等待信号另开一终端# gcc aprocess.c -o aprocess# ps aux查看B进程的ID为11430# ./aprocess 11430此时bprocess进程就会打印出process B received SIGINT
0 0
- 信号通讯编程
- Linux信号通讯编程
- Linux信号通讯编程
- 【Linux】信号通讯编程
- Linux_4.5_信号通讯编程
- 【Linux信号通讯编程】信号量同步
- linux应用编程--信号通讯(上)
- 信号通讯
- 信号通讯
- 信号通讯
- 【Linux信号通讯编程】信号量互斥编程
- Linux信号通讯编程(国嵌总结)
- linux信号通讯
- Linux信号通讯
- 异步通讯方式--信号
- Linux进程通讯:信号(signal)
- linux 进程通讯之信号
- 进程间通讯概述管道通讯信号通讯共享内存
- Android TextView内部padding问题
- poj 2505 博弈(乘以[2,9])
- 第28题
- textAligment,contentVerticalAlignment,contentHorizontalAlignment,contentMode 对比总结
- 协方差的意义和计算公式
- 信号通讯编程
- hdu Eddy's AC难题 数学题目 一种排列组合C(n,i)的运算
- ListView滑动过程中图片显示重复错位闪烁的问题分析和解决
- Qt 涂鸦板
- 混合图欧拉回路(hdoj3472 HS BDC)
- Linux中的 僵尸进程 和 孤儿进程
- Java Thread Join
- Cannot change version of project facet Dynamic web
- 二分图判定