linux系統程式設計之程序訊號的使用

2021-09-23 02:01:38 字數 990 閱讀 6878

訊號捕捉特性:

1. 程序正常執行時,預設pcb中有乙個訊號遮蔽字,假定為*,它決定了程序自動遮蔽哪些訊號,當註冊了某個訊號捕捉函式,捕捉到該訊號以後,要呼叫該函式,而該函式有可能執行很長時間,在這期間所遮蔽的訊號不由來指定,而是用sa_mask來指定,調完訊號處理函式,再次恢復

2. ***訊號捕捉函式執行期間,***訊號自動被遮蔽

3. 阻塞的常規訊號不支援排隊,產生多次只記錄一次。(即前31個)

sigchld訊號

子程序在暫停或者退出的時候回傳送sigchld訊號,可以通過捕捉sigchld

訊號來**子程序。

#include

#include

#include

void

catch_sig

(int num)

}int

main()

}if(i ==10)

}else

if(i <10)

}

訊號執行函式,**子程序,可以用迴圈,一次會**多個,不需要每個程序結束都觸發訊號,從訊號處理函式中**,這樣每次只能**乙個。

sigchld訊號的註冊一定要在程序建立之前(或者在程序結束之前完成)完成。(否則會出現程序已經結束,訊號沒有捕捉到,即殭屍程序)

處理:可以在建立子程序之前遮蔽sigchld訊號

sigset_t myset,oldset;

sigemptyset(&myset);/清空

sigaddset(&myset,sigchld);

sigprocmask(sig_block,&myset,&oldset);//oldset 保留現場,設定了sighld到阻塞訊號集。

註冊訊號之後,需要解除遮蔽現場:

sigpromask(sig_setmask,&oldset,null);

Linux系統程式設計之程序

程序狀態 4 5種 就緒 初始化 執行,掛起 等待 停止 pbc成員 1 程序id 2 程序狀態 3 程序切換需要儲存和恢復的cpu暫存器 4 描述虛擬位址空間資訊 5 描述控制終端的資訊 6 當前工作目錄 7 umask掩碼 8 檔案描述符 9 訊號相關的資訊 10 使用者和使用者組id 11 會...

系統程式設計之程序

一 程序相關概述 1 相關指令 ps aux 檢視所有程序 ps aux grep 程序 只會過濾出指定程序資訊 top 指令類似windows任務管理器 2 程序描述符 pid pid 0 稱為交換程序 程序排程 pid 1 init程序 系統初始化 二 c程式的儲存空間是如何分配的 從高位址到低...

Linux 系統程式設計 之 程序 Process

知識點 1.python 跨平台 因此使用process類 而不使用 fork 2.程序建立格式 p process target p1,args process1 target 為函式名 args 為函式引數 3.p.start 建立子程序 p.join 1 主程序等待子程序 1s p.termi...