siginfo_t結構體簡介

    在學習linux信號處理時發如今結構體sigaction中定義了一個信號處理函數指針sa_sigaction,而這個指針指向的是一個擁有三個參數的函數,結構體中定義的函數指針爲:void  (*sa_sigaction)(int,  struct  siginfo_t  *,  void  *)linux

      在筆者的資料上並無對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的簡寫,該變量用來存儲信號編號而且恆有值;ui

si_code:  signal code的簡寫,這個變量取值較多,這裏不展開討論,具體可從下面連接處獲取;spa

si_value: signal value的簡寫,經過定義能夠得知這個變量是一個結構體,該結構體定義以下:指針

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

si_errno:  若是該位不爲0,則和信號在一塊兒的有一個錯誤代碼,即errno(能夠理解成信號發生錯誤)code

si_pid:  發送該信號的進程idblog

si_uid:  發送該信號的用戶id進程

si_addr:  錯誤發生的地址io

 

這裏筆者水平有限,若是以爲文章有錯誤或者不全面,能夠經過下面的網址查看,裏面有這篇隨筆的參考:

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

相關文章
相關標籤/搜索