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