信号之函数sigaction、sigsetjmp、siglongjmp、sigsuspend以及abort

您所在的位置:网站首页 sigsetjmp函数 信号之函数sigaction、sigsetjmp、siglongjmp、sigsuspend以及abort

信号之函数sigaction、sigsetjmp、siglongjmp、sigsuspend以及abort

2024-02-19 04:02| 来源: 网络整理| 查看: 265

本文来自个人博客:https://dunkwan.cn

文章目录 函数`sigaction`函数`sigsetjmp`和`siglongjmp`函数`sigsuspend`函数`abort`

函数sigaction

sigaction函数的功能是检查或修改(或检查并修改)与指定信号向关联的处理动作。此函数取代了UNIX早期版本使用的signal函数。

#include int sigaction(int signo, const struct sigaction *restrict act, struct sigaction *restrict oact); 返回值:若成功,返回0;若出错,返回-1。

参数signo是要检测或修改其具体动作的信号编号。若act指针非空,则要修改其动作。如果oact指针非空,则系统经由oact指针返回该信号的上一个动作。

此函数中的sigaction结构如下:

struct sigaction{ void (*sa_handler)(int); /* addr of signal handler */ /* or SIG_IGN, or SIG_DFL */ sigset_t sa_mask; /* additional signals to block */ int sa_flags; /* signal options */ /* alternate handler */ void (*sa_sigaction)(int, siginfo_t *, void *); };

以下是用sigaction函数实现signal。

#include "../../include/apue.h" /* Reliable version of signal(), using POSIX sigaction(). */ Sigfunc * signal(int signo, Sigfunc *func) { struct sigaction act, oact; act.sa_handler = func; sigemptyset(&act.sa_mask); act.sa_flags = 0; if(signo == SIGALRM){ #ifdef SA_INTERRUPT act.sa_flags |= SA_INTERRUPT; #endif }else{ act.sa_flags |= SA_RESTART; } if(sigaction(signo, &act, &oact)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3