UNIX環境高階程式設計之第10章 訊號

2021-09-30 12:19:04 字數 862 閱讀 6224

訊號是軟體中斷.很多比較重要的應用程式都需要處理訊號.訊號提供一種處理非同步時間的方法,例如,終端使用者鍵入中斷鍵,會通過訊號機制停止乙個程式,或及早終止管道中的下乙個程式.

首先每個訊號都有乙個名字.這些名字都是以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 ...