sigaction 使用

sigaction 使用函数sigaction原型:intsigaction(intsigno,conststructsigaction*restrictact,structsigaction*restrictoact);@signo信号编号@act要注册的信号动作@oact原信号动作参数structsigactionstructsigaction{

大家好,又见面了,我是你们的朋友全栈君。

函数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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141131.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月26日 下午4:00
下一篇 2022年5月26日 下午4:00


相关推荐

  • 每天一道算法_4_Hangover

    此系列刚开始两天就被十一假期打断了,去山西玩了几天,今天刚回来,为了弥补一下心里的貌似隐隐作痛的愧疚感,补上一刀。今天的题目是 Hangover,如下: DescriptionHow far can you make a stack of cards overhang a table? If you have one card, you can create a max

    2022年3月10日
    36
  • 磁盘初始化的过程

    磁盘初始化的过程1.低级初始化(物理初始化)1.1将磁盘分成扇区以便读写操作。1.2为每个扇区采用特别的数据结构2.磁盘分区将磁盘分为由一个或多个柱面组成的分区(C盘D盘)3.逻辑格式化3.1创建文件系统(根目录等)3.2将初始文件系统的数据结构存储到磁盘上(空闲、已分配的空间及一个空目录)…

    2026年2月9日
    5
  • 机器学习中常用激活函数和损失函数

    1.激活函数1.1各激活函数曲线对比常用激活函数:tf.sigmoid()tf.tanh()tf.nn.relu()tf.nn.softplus()tf.nn.softmax()t

    2021年12月30日
    60
  • RubyMine 4 注册 序列号

    RubyMine 4 注册 序列号RubyMine 注册序列号现在最新版本是 4 0 2 使用这个 key 仍然有效 对于这个没什么好说的 如有必要 请支持购买正版 No 1 name rubymineLice 70414 02VG0BeoZbwm e s830EDlHcWg8

    2026年3月16日
    1
  • pc模拟器运行多个Android,低配电脑如何强制开50个安卓模拟器挂机

    pc模拟器运行多个Android,低配电脑如何强制开50个安卓模拟器挂机贴几个模拟器的截图 后台还有 42 个 这是用模拟器开软件自动抢红包 每月的红包数量 大家自己看图领会 2017 9 3001 34 上传下载附件 383KB 使用的是 14 年的普通笔记本 原来 4G 内存 加了 8G 变成 12G 随便装的 64 位 Win7 系统 配置如图 推荐大家使用 Windows10 效率稳定性比 Win7 更佳 同样硬件 能多开 5 个以上不卡 多开之后 系统运行仍然流畅 模拟器反应

    2026年3月26日
    2
  • js 字符串截取方法汇总

    js 字符串截取方法汇总一、使用slice()截取1,函数说明slice()方法可通过指定的开始和结束位置,提取字符串的某个部分,并以新的字符串返回被提取的部分。语法如下:string.slice(start,end);start(必需):规定从何处开始选取。如果是负数,那么它规定从字符串尾部开始算起的位置。也就是说,-1指最后一个字符,-2指倒数第二个字符,以此类推。参数说明:end(可选):规定从何处结束选取,即结束处的字符下标。如果没有指定该参数,那么截取的字符串包含从start到结束的所…

    2022年6月11日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号