进程间通信IPC(三)之Linux信号

本文深入探讨Linux进程间通信的信号机制,包括signal()用于接收信号,kill()用于发送信号,sigaction()更灵活地处理信号,以及sigqueue()发送带参数的实时信号。通过实例解析各个函数的使用,阐述信号在处理异步事件中的关键作用。

目录

进程间通信:IPC

四、Linux信号

(1)signal()函数___收信号

(2)kill()函数___发信号

(3)sigaction()函数___收信号

(4)sigqueue()函数___发信号


进程间通信:IPC

IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等,其中Socket和Streams支持不同主机上的两个进程IPC。

四、Linux信号

对于Linux来说,实际信号是软中断,许多重要的程序都需要处理信号,信号为Linux提供了一种处理异步事件的方法,比如,终端用户输入了ctrl+c来中断程序,会通过信号机制停止一个程序

信号概述

信号的名字和编号:每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如SIGIO、SIGCHLD等等

查看信号:kill -l

信号的处理方法:忽略、捕捉、默认动作

忽略信号(SIG_IGN):大多数信号可以使用这个方式来处理,但是有两种信号不能被忽略(分别是SIGKILL和SIGSTOP)

捕捉信号:需要告诉内核,用户希望如何处理某一种信号,说白了就是写一个信号处理函数,然后把这个函数告诉内核

系统默认动作:对于每个信号来说,系统都对应由默认的处理动作,当发生了该信号,系统会自动执行。

杀死进程:

(1)查看进程号:ps -aux|grep a.out --------->a.out指正在运行的程序

(2)kill -9 进程号

(1)signal()函数___收信号

signal()函数功能:设置某个信号的捕捉行为

#include <signal.h>

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

int signum:             表示要捕捉的信号
sighandler_t handler:   一个自定义的处理信号的函数,信号的编号为这个自定义函数的参数

参数handler表示信号的处理方式,有三种情况:
(1)SIG_IGN:忽略参数signum所指的信号。
(2)一个自定义的处理信号
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值