UNIX基礎知識之訊號

2022-05-04 20:36:07 字數 1159 閱讀 3277

本篇博文內容摘自《unix環境高階程式設計》(第二版),僅作個人學習記錄所用。關於本書可參考:

訊號(signal)是通知程序已發生某種情況的一種技術。例如,若某一程序執行除法操作,其除數為0,則將名為sigfpe(浮點異常)的訊號傳送給該程序。程序如果處理訊號有三種選擇:

(2)按系統預設方式處理。對於除以0的情況,系統預設方式是終止該程序。

(3)提供乙個函式,訊號發生時則呼叫該函式,這被稱為捕捉該訊號。使用這種方式,我們只要提供自編的函式就將能知道什麼時候產生了訊號,並按所希望的方式處理它。

很多情況會產生訊號。終端鍵盤上有兩種產生訊號的方法,分別稱為中斷鍵(interrupt key,通常是delete鍵或ctrl+c)和退出鍵(quit key,通常是ctrl+\),它們被用於中斷當前執行的程序。另一種產生訊號的方法是呼叫名為kill的函式。在乙個程序中呼叫此函式就可向另乙個程序傳送乙個訊號。當然這樣做也有些限制:當向乙個程序傳送訊號時,我們必須是該程序的所有這或是超級使用者。

程式清單1-8 從標準輸入讀命令並執行(改自程式清單1-5,加入了捕捉訊號的功能):

[root@localhost unix_env_advance_prog]# cat prog1-8

.c#include

"apue.h

"#include

static

void sig_int(int); /*

our signal-catching function

*/int

main(

void

)

else

if(pid == 0) /*

child

*/

/*parent

*/if((pid = waitpid(pid, &status, 0)) < 0

) err_sys(

"waitpid error");

printf(

"%% ");

}exit(0);

}void

sig_int(

intsigno)

Unix 基礎知識

一 引言 所有作業系統都向它們執行的程式提供服務。典型的服務有執行新程式 開啟檔案 讀檔案 分配儲存區 獲取當前時間等 二 登入 登入名 shell 三 檔案和目錄 四 輸入和輸出 1 檔案描述符 檔案描述符是乙個小的非負整數,核心用以標識乙個特定程序正在存訪的檔案。當核心開啟乙個現存盤案或建立乙個...

Unix基礎知識

gnu是gnu s not unix的縮寫,gnu nu nju 角馬的意思,模樣見下圖 gnu通用公共許可gpl general public license gpl是自由軟體 會發行的用於計算機軟體的協議證書,使用該證書的軟體被稱為自由軟體 free software 後來改名為開發源 軟體 o...

unix基礎知識

一 所有作業系統都未他們所執行的程式提供服務 執行新程式 開啟檔案 讀檔案 分配儲存區以及獲取當前的時間 二 可將作業系統定義為一種軟體,控制著計算機硬體資源,提供程式執行環境,也就是核心 kernel 核心的介面稱之為系統呼叫 system call 公用函式庫構建在系統呼叫介面之上,應用程式既可...