国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux 信號(二)—— signal 函數

2024-06-28 13:19:42
字體:
來源:轉載
供稿:網友
linux 信號(二)—— signal 函數

弗洛伊德認為:要解決這些苦惱,當事人就要通過回憶并理解自己早期的童年經歷,來獲得對潛意識沖突的頓悟。弗洛伊德的療法被稱為“精神分析” (psychoanalysis),在 20 世紀的很長一段時間被心理衛生從業者廣為采用。 —— 《Change Your Thinking》

ilocker:關注 Android 安全(新入行,0基礎) QQ: 2597294287

1 #include <signal.h>2 void (*signal(int signo, void (*func)(int)))(int);

為 signo 指定的信號設置信號處理程序。成功則返回指向之前信號處理程序的函數指針,出錯則返回 SIG_ERR。

如果看不懂 signal 的函數聲明,就要好好復習一下 c/c++ 的基礎(函數指針)了。

將 signal 函數的聲明簡化一下:

1 typedef void SigFunc(int); //信號處理函數原型2 Sigfunc * signal(int signo, SigFunc * func);

簡單示例:

 1 void sig_handler(int signo) { 2   if (SIGUSR1 == signo) 3     PRintf(“received SIGUSR1.”); 4   else 5     printf(“received signal %d.”, signo); 6 } 7  8 int main() { 9   if (SIG_ERR == signal(SIGUSR1, sig_handler))10     printf(“can’t catch SIGUSR1”);11 12   for ( ; ; )13     pause();14 }

還可將信號處理函數設置為 SIG_IGN (表示忽略此信號) 或 SIG_DFL (表示使用系統默認的信號處理程序)。

信號 SIGSTOP、SIGKILL 無法捕獲或忽略。

記錄以下兩點,但沒有驗證,不確定是否表述正確:

  • 假設正在執行信號 A 的處理程序,此時來了另一個信號 B,則會轉去執行 B 的信號處理程序,處理完畢之后,再接著執行 A 的信號處理程序。
  • 在進程中有一個軟中斷信號域,該域中每一位對應一個信號,當收到某一信號時,相應位會置位。所以,對于同一種信號,進程并不知道在處理之前已經收到過多少個。

除了 signal,還有 sigaction 函數可以設置信號處理函數,比 signal 要復雜些,后面接著再寫筆記。

學習資料: 《unix 環境高級編程》


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 花垣县| 子洲县| 托里县| 玛纳斯县| 历史| 华宁县| 沧源| 古田县| 陕西省| 松原市| 商河县| 密云县| 涪陵区| 饶河县| 庐江县| 来安县| 清新县| 布尔津县| 阿拉善盟| 涟源市| 顺平县| 柳河县| 周宁县| 武乡县| 邵武市| 闸北区| 巩义市| 朝阳县| 廊坊市| 深泽县| 南雄市| 哈尔滨市| 东乡| 宁都县| 神木县| 双牌县| 屏东市| 辽宁省| 广昌县| 梧州市| 隆德县|