《Linux系统调用:sigaction,sigqueue》

一、介绍

从UNIX系统继承过来的信号(SIGHUP~SIGSYS,前32个)都是不可靠信号,不支持排队(多次发送相同的信号,进程可能只能收到一次,可能会丢失)。

SIGRTMIN 至 SIGRTMAX 的信号支持排队(发多少次, 就可以收到多少次, 不会丢失),故称为可靠信号。

可靠信号就是实时信号,非可靠信号就是非实时信号。
signal()函数只能提供简单的信号安装操作,使用 signal() 函数处理信号比较简单,只要把要处理的信号和处理函数列出即可。signal()函数主要用于前面 32 种不可靠、非实时信号的处理,并且不支持信号传递信息。

Linux 提供了功能更强大的 sigaction() 函数,此函数可以用来检查和更改信号处理操作,可以支持可靠、实时信号的处理,并且支持信号传递信息。

sigaction()检查或修改指定信号的设置(或同时执行这两种操作)
sigqueue()给指定进程发送信号

二、接口函数

#include 

int sigaction(int signum,const struct sigaction *act, struct sigaction *oldact );
参数:
	signum: 要操作的信号
	act:   对信号的新处理方式(设置)
	oldact:获取原信号的处理方式。
	
返回值:
	成功返回0,错误-1并设置errno


int sigqueue(pid_t pid, i

你可能感兴趣的:(Linux/Unix,系统调用)