日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux学习之系统编程篇:与信号捕捉有关的函数(signal / sigaction)

發布時間:2024/9/30 linux 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 結構體詳情如下:

struct sigaction //函數調用時候傳入地址 {void (*sa_handler)(int); // 跟 signal 函數指針用法相同sigset_t sa_mask; // 在信號處理過程中(從捕捉到回調函數執行完畢)臨時屏蔽的信號集,在信號處理結束后,屏蔽信號繼續執行,如果沒有特別需求,先定義,再進行清空操作。int sa_flags; // 固定寫 0 這樣可以與第一個參數(函數指針)相配套};

(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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。