linux中sigaction函数使用说明

本文详细介绍了Linux中sigaction函数的使用,包括其参数、struct sigaction结构体的成员以及不同标志的含义。通过示例展示了如何注册信号处理函数,并讨论了SA_RESTART标志对系统调用的影响。同时提醒注意,使用sigaction函数处理SIGUSR1和SIGUSR2信号时,可能会覆盖原有的信号处理行为,如Ctrl+C的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转 https://blog.csdn.net/weibo1230123/article/details/81411827


 signal 函数的使用方法简单,但并不属于 POSIX 标准,在各类 UNIX 平台上的实现不尽相同,因此其用途受

到了一定的限制。而 POSIX 标准定义的信号处理接口是 sigaction 函数,其接口头文件及原型如下:
 #include <signal.h>
 int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);

 ◆ signum:要操作的信号。
 ◆ act:要设置的对信号的新处理方式。
 ◆ oldact:原来对信号的处理方式。
 ◆ 返回值:0 表示成功,-1 表示有错误发生。
struct sigaction 类型用来描述对信号的处理,定义如下:

struct sigaction
 {
  void     (*sa_handler)(int);
  void     (*sa_sigaction)(int, siginfo_t *, void *);
  sigset_t  sa_mask;
  int       sa_flags;
  void     (*sa_restorer)(void);
 };

在这个结构体中,

sa_handler 是一个函数指针,其含义与 signal 函数中的信号处理函数类似。

sa_sigaction 则是另一个信号处理函数,它有三个参数,可以获得关于信号的更详细的信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值