攜帶訊息原理:
1、 繫結 sigaction()
2、sigqueue() 傳送訊息
1、接受、繫結訊號sigaction()原函式
#include
//繫結訊號
intsigaction
(int signum,
const
struct sigaction *act,
struct sigaction *oldact)
; 引數:
signum: 要捕捉的訊號
act : 結構體 (要配置的三個重要引數)
oldact: null(堵塞)
act結構需要配置的引數:
struct sigaction
;引數:
1、s1a_handler:(不配置)訊號處理函式,不接受額外資料,sig_ign 為忽略,sig_dfl 為預設。
2、sa_sigaction:定義訊號處理函式,能夠接受額外資料
a、int :捕捉到相應的訊號值
b、siginfo_t * :si_value儲存了傳送過來的資訊,同時,在 si_int或者 si_ptr成員中也儲存了對應的資料
c、void
* :訊號攜帶訊息的有效值(判斷是否為nll)
3、sa_mask :不配置(預設阻塞關鍵字的訊號)
4、sa_flags :sa_siginfo 巨集接受資料
siginfo_t結構體:
獲取訊號的資訊
siginfo_t
接收端demo:
#include
#include
//void (*sa_sigaction)(int, siginfo_t *, void *);
void
handler
(int signum, siginfo_t *data ,
void
* text)
}int
main()
2、sigqueue() 傳送訊息
sigqueue()函式原型:
int
sigqueue
(pid_t pid,
int sig,
const
union si**al value)
; 發訊息
引數:pid :程序pid號
sig :捕捉的訊號
value聯合體 :發的內容
union si**al
;
傳送端demo:
#include
#include
#include
intmain
(int argc,
char
**ar**)
Linux之高階命令
centos和redhat suse系列 rpm qa kernel或rpm qa grep i kerneldebian和ubuntu系列 dpkg list grep linux image sysctl命令的配置檔案是 etc sysctl.conf,可以 1.使用sysctl工具修改核心引數...
二 Linux之高階指令
df指令 作用 檢視磁碟的空間 語法 df h h 以可讀性形式較高的形式展示大小 free指令 作用 檢視記憶體使用情況 語法 free m m單位為mb,g單位為g 四捨五入 a 已分配但未被使用 mem beffers 輸入 cached 輸出 free b buffers cache 檢視剩...
Linux記憶體管理之高階記憶體對映
分析完linux記憶體管理的基本概念與實現之後,就可以接著分析使用者空間與核心空間的互動操作了。brk系統呼叫屬於那種常用但是 可見度 不高的操作,常用於使用者空間堆的管理 請參閱本站的 中的malloc機制分析 一文 brk在使用者空間的介面為int brk void end data segme...