Linux信号通讯编程(国嵌总结)
来源:互联网 发布:oracle删除数据库 11g 编辑:程序博客网 时间:2024/04/29 20:31
信号通讯流程为:
①进程A/内核选择信号
②发送信号
③进程B接收信号并处理
Linux系统支持的所有信号均定义在/usr/include/asm/signal.h,其中常见的信号有:
①SIGKILL:杀死进程
②SIGSTOP:暂停进程
③SIGCHLD:子进程停止或结束时用来通知父进程
receive_signal.c(接收代码):
①进程A/内核选择信号
②发送信号
③进程B接收信号并处理
Linux系统支持的所有信号均定义在/usr/include/asm/signal.h,其中常见的信号有:
①SIGKILL:杀死进程
②SIGSTOP:暂停进程
③SIGCHLD:子进程停止或结束时用来通知父进程
常用到的函数有:
kill函数
<pre name="code" class="objc">原型:int kill(pid_t,int sig)头文件:<sys/types.h><signal.h>功能:<span style="color:#ff0000;">传送信号给特定的进程,成功返回0,失败返回-1</span>参数:pid为接受信号的进程号:1. pid大于零时,pid是信号欲送往的进程的ID。2. pid等于零时,信号将送往所有与调用kill()的那个进程属同一个使用组的进程。3. pid等于-1时,信号将送往所有调用进程有权给其发送信号的进程,除了进程1(init)。4. pid小于-1时,信号将送往以-pid为组标识的进程。sig:发送的信号
signal函数
<pre name="code" class="objc">原型:typedef void (*sighandler_t)(int);/*函数指针*/ sighandler_t signal(int signum,sighandler_t handler)头文件:<signal.h>功能:<span style="color:#ff0000;">设置信号处理方式,成功则返回处理函数的函数指针,失败返回SIG_ERR</span>参数:signum:设置信号处理函数所依赖的信号编号 handler:信号处理函数。如果参数handler不是函数指针,则必须是下列两个常数之一:SIG_IGN:忽略参数signum指定的信号SIG_DEL:将参数signum指定的信号重设为预设的信号处理方式
pause函数
<pre name="code" class="objc">原型:int pause(void)头文件:<unistd.h>功能:<span style="color:#ff0000;">等待信号</span>
实例
send_signal.c (发送代码):
<pre name="code" class="objc">#include <unistd.h>#include <signal.h>#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]){pid_t pid;pid = atoi(argv[1]); //字符到数字的转换,信号实质为数字kill(pid, SIGINT); //传送信号到特定进程pidreturn 0;}
receive_signal.c(接收代码):
<pre name="code" class="objc">#include <signal.h>#include <stdio.h>#include <stdlib.h>void myfunction(int signal_sum)//自定义信号处理函数{if( signal_sum == SIGINT ){printf("capture signal is : SIGINT\n");}}void main(){ /*设置处理方式*/signal(SIGINT, myfunction);printf("wait ......\n");/*等待一个信号产生后才停止等待*/pause();exit(0);}
0 0
- Linux信号通讯编程(国嵌总结)
- Linux信号通讯编程
- Linux信号通讯编程
- 【Linux】信号通讯编程
- 【Linux信号通讯编程】信号量同步
- linux应用编程--信号通讯(上)
- 信号通讯编程
- 【Linux信号通讯编程】信号量互斥编程
- linux信号通讯
- Linux信号通讯
- linux/unix 环境编程-信号总结
- Linux进程通讯:信号(signal)
- linux 进程通讯之信号
- Linux进程通讯:管道通讯、信号通讯、共享内存
- Linux_4.5_信号通讯编程
- linux系统编程之信号(一):信号基本概述
- linux系统编程之信号(一):中断与信号
- linux系统编程之信号(一):中断与信号
- LeetCode2.1.21(Gas Station)
- php 面向对象之 __invoke
- Java 动态代理
- poj 1573 Robot Motion
- POJ 3468 A Simple Problem with Integers(线段树成段更新+lazy标记)
- Linux信号通讯编程(国嵌总结)
- python写csv文件
- 清理 /boot分区多余的内核 版本
- vim编辑器简单使用(4)
- Events and Delegates(事件和委托)
- 【Nutch】Nutch的抓取流程
- LeetCode2.1.22 (Candy)
- 哈哈
- 笔记0_算法,程序设计,语言等_哈佛_计算机科学cs50_David J. Malan