Linux学习之系统编程篇:与信号捕捉有关的函数(signal / sigaction)
生活随笔
收集整理的這篇文章主要介紹了
Linux学习之系统编程篇:与信号捕捉有关的函数(signal / sigaction)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、signal 函數(shù)
(1)原型:
typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler);(2)參數(shù):
參數(shù) 1:捕捉指定的信號
參數(shù) 2:函數(shù)指針(因此需要寫回調(diào)函數(shù))
(3)回調(diào)函數(shù):(作用:信號被捕捉后,要執(zhí)行什么操作)
原型:void func(int num);
注意:只有當(dāng)信號產(chǎn)生并捕捉后才調(diào)用
signal 函數(shù)雖然簡單,但在 UNIX 不同版本中的行為可能不一樣,所以,建議使用 sigaction 函數(shù)。
二、sigaction 函數(shù)
(1)函數(shù)原型:
int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);(2)參數(shù):
參數(shù) 1:需要捕捉的信號
參數(shù) 2:怎么去捕捉(在結(jié)構(gòu)體中作設(shè)置);
參數(shù) 3:上次捕捉的相關(guān)信息,一般傳 NULL
參數(shù) 2 結(jié)構(gòu)體詳情如下:
(3)捕捉的一般流程:
struct sigaction act; // 設(shè)置參數(shù) 2 :結(jié)構(gòu)體 act. sa_flags =0; act. sa_handler = func; // 設(shè)置回調(diào)函數(shù)指針 sigemptyset(&act. sa_mask); // 置空臨時屏蔽信號 // sigaddset(&act.sa_mask, signum1); // 臨時屏蔽 signum1, 不需要屏蔽的話忽略此句 sigaction(signum2, &act, NULL); // 捕捉 signum2總結(jié)
以上是生活随笔為你收集整理的Linux学习之系统编程篇:与信号捕捉有关的函数(signal / sigaction)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux学习之系统编程篇:与信号集有关
- 下一篇: TCP往返时延的估计和超时