訊號是軟體中斷.很多比較重要的應用程式都需要處理訊號.訊號提供一種處理非同步時間的方法,例如,終端使用者鍵入中斷鍵,會通過訊號機制停止乙個程式,或及早終止管道中的下乙個程式.
首先每個訊號都有乙個名字.這些名字都是以sig開頭.例如,sigabrt是夭折訊號,當程序呼叫abort函式是產生這種訊號.
unix系統訊號機制最簡單的介面是signal函式
#include void (*signal(int signo, void (*func)(int)))(int);
signo引數是一下圖中的訊號名.func的值是常量sig_ign,常量sig_dfl或者當接到此訊號後要呼叫的函式的位址.sig_ign向核心表示忽略此訊號(sigkill和sigstop不能忽略).sig_dfl標示接到訊號後的動作是系統預設動作
程式啟動
當執行乙個程式時,所有訊號的狀態都是系統預設或者忽略
程序建立
當乙個程序呼叫fork時,其子程序整合父程序的訊號處理方式
不可靠再這裡指:訊號可能會丟失,乙個訊號發生了,但程序卻可能一直不知道這一點
程序捕捉到訊號並對其進行處理時, 程序正在執行的正常指令序列就被訊號處理程式臨時中斷,它首先執行該訊號處理程式中的指令.
kill 函式將訊號傳送給程序或程序組,raise函式則允許程序相自身傳送訊號
#includeint kill (pid_t pid, int signo);
int raise (int signo);
unix環境高階程式設計之環境搭建
首先,apue.h不是系統自有的,而是做著自己的寫的,因此,本書程式設計的第一步就是將該檔案包含下來 2.執行一下 ls,發現多了乙個apue.3e,cd 命令進入該目錄 3.執行 make 第三步一般都會出錯,提示是需要 bsd,執行 apt yum install y libbsd dev,重新...
UNIX環境高階程式設計(第1章 UNIX基礎知識)
本章從程式設計人員角度快速瀏覽unix,也為不熟悉unix的程式設計人員簡要介紹unix提供的各種服務。1.unix體系結構 核心 控制計算機硬體資源,提供程式執行環境的軟體。核心的介面 系統呼叫。圖1 1 unix作業系統的體系結構 2.登入 cat etc passwd root x 0 0 r...
UNIX環境高階程式設計之syslog
核心程式可以呼叫log函式記日誌.任何使用者程序可以開啟並讀取 dev klog裝置讀取這些訊息 大多數使用者程序,呼叫syslog函式產生日誌訊息.這使得訊息傳送到unix域資料報套接字 dev log 使用者程序傳送日誌訊息到udp埠514 通常syslogd守護程序會讀取乙個配置檔案 etc ...