sigaction 使用
来源:互联网 发布:ubuntu进程查看 编辑:程序博客网 时间:2024/06/08 17:49
函数sigaction
原型:int sigaction(int signo,const struct sigaction *restrict act, struct sigaction *restrict oact); @signo 信号编号 @act 要注册的信号动作 @oact 原信号动作
参数 struct sigaction
struct sigaction{
void (*sa_handler)(int);
sigset_t sa_mask;
int sa_flag;
void (sa_sigaction)(int,siginfo_t ,void *);
};
sa_haddler or sa_sigaction
sa_handler & sa_sigaction 信号处理函数的指针,二者用其一:如果sa_flags中存在SA_SIGINFO标志,那么sa_sigaction将作为signum信号的处理函数。否则用sa_handler。
sa_mask
sa_mask 指定一个系统在处理该信号时要屏蔽(阻塞)的信号集合,即在调用该信号捕捉函数之前,这一信号集要加进进程的信号屏蔽字中。仅当从信号捕捉函数返回时再将进程的信号屏蔽字复位为原先值。另外,除了SA_NODEFER标志被指定外,触发信号处理函数执行的那个信号也会被阻塞。
sa_flag
sa_flag 指定一系列用于修改信号处理过程行为的标志,由下面的0个或多个标志通过or运算组合而成:SA_SIGINFO 指定信号处理函数需要三个参数,所以应使用sa_sigaction替代sa_handler。SA_NODEFER 在信号处理函数处置信号的时段中,核心程序不会把这个间隙中产生的信号阻塞。SA_INTERRUPT 由此信号中断的系统调用不会自动重启SA_RESTART 核心会自动重启信号中断的系统调用,否则返回EINTR错误值。(重启被中断的系统调用)SA_RESETHAND 信号处理函数接收到信号后,会先将对信号处理的方式设为预设方式,而且当函数处理该信号时,后来发生的信号将不会被阻塞。SA_ONSTACK 如果利用sigaltstack()建立信号专用堆栈,则此标志会把所有信号送往该堆栈。SA_NOCLDSTOP 假如signum的值是SIGCHLD,则在子进程停止或恢复执行时不会传信号给调用本系统调用的进程。SA_NOCLDWAIT 当调用此系统调用的进程之子进程终止时,系统不会建立zombie进程。
使用实例
redis 信号处理
redis 信号处理
参考
ref 1
0 0
- sigaction() 使用
- sigaction() 使用
- sigaction 使用
- sigaction() 使用
- sigaction() 使用
- sigaction函数使用实例
- sigaction使用(signal siginfo_t)
- 使用 sigaction 函数
- sigaction 的使用
- sigaction函数的使用
- sigaction函数的使用
- sigaction函数的使用
- sigaction函数使用实例
- sigaction函数的使用
- sigaction()
- sigaction
- sigaction()
- sigaction()
- 【POJ2886】Who Gets the Most Candies?-线段树+反素数
- Oracle关于高速缓存区应用原理
- (转)Java泛型<? extends T>和<? super T>
- Java 调用现有的在Solaris平台上的库文件
- request.getScheme()+"://"+request.getServerName()+":"+request.getServerP
- sigaction 使用
- HttpClient使用详解 (如何上传文件到文件服务器)
- 递归思想总结
- CakePHP3.2 文件接口篇
- ACM187 快速查找素数
- 深入理解JVM内幕
- VB.net版机房收费-“未能添加对‘Factory’的引用”
- zzuli蓝桥 text1 D find sum
- ThinkPHP函数详解:C方法