首页 > 其他 > 详细

siginfo_t结构体简介

时间:2020-09-20 20:15:57      阅读:82      评论:0      收藏:0      [点我收藏+]

    在学习linux信号处理时发现在结构体sigaction中定义了一个信号处理函数指针sa_sigaction,而这个指针指向的是一个拥有三个参数的函数,结构体中定义的函数指针为:void  (*sa_sigaction)(int,  struct  siginfo_t  *,  void  *)

      在笔者的资料上并没有对siginfo_t这个结构体的详细定义,而这个结构体中记录的又是信号的细节值,让人十分在意。在通过在网上查找资料,笔者发现了这个结构体的详细定义:

 1 typedef struct {
 2     int si_signo;
 3     int si_code;
 4     union sigval si_value;
 5     int si_errno;
 6     pid_t si_pid;
 7     uid_t si_uid;
 8     void *si_addr;
 9     int si_status;
10     int si_band;
11 } siginfo_t;

下面介绍各个变量的含义。

si_signo:  signal number的简写,该变量用来存储信号编号并且恒有值;

si_code:  signal code的简写,这个变量取值较多,这里不展开讨论,具体可从下面链接处获取;

si_value: signal value的简写,通过定义可以得知这个变量是一个结构体,该结构体定义如下:

1 union sigval {
2     int sival_int;
3     void *sival_ptr;
4 };

si_errno:  如果该位不为0,则和信号在一起的有一个错误代码,即errno(可以理解成信号发生错误)

si_pid:  发送该信号的进程id

si_uid:  发送该信号的用户id

si_addr:  错误发生的地址

 

这里笔者水平有限,如果觉得文章有错误或者不全面,可以通过下面的网址查看,里面有这篇随笔的参考:

https://www.mkssoftware.com/docs/man5/siginfo_t.5.asp#Signal_Codes

siginfo_t结构体简介

原文:https://www.cnblogs.com/zw1009-1803/p/13701754.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!