LINUX 訊號 1 基礎知識

2021-10-09 02:06:31 字數 1215 閱讀 3138

訊號是軟體中斷。很多比較重要的應用程式都需處理訊號。訊號提供了一種處理非同步事件

的方法:終端使用者鍵入中斷鍵,則會通過訊號機構停止乙個程式。

(1) 忽略此訊號。大多數訊號都可使用這種方式進行處理,但有兩種訊號卻決不能被忽略。

它們是:s i g k i l l和s i g s to p。這兩種訊號不能被忽略的原因是:它們向超級使用者提供一種使

程序終止或停止的可靠方法。另外,如果忽略某些由硬體異常產生的訊號(例如非法儲存訪問

或除以0),則程序的行為是未定義的。

(2) 捕捉訊號。為了做到這一點要通知核心在某種訊號發生時,呼叫乙個使用者函式。在用

戶函式中,可執行使用者希望對這種事件進行的處理。例如,若編寫乙個命令直譯器,當使用者用

鍵盤產生中斷訊號時,很可能希望返回到程式的主迴圈,終止系統正在為該使用者執行的命令。

如果捕捉到s i g c h l d訊號,則表示子程序已經終止,所以此訊號的捕捉函式可以呼叫 w a i t p i d

以取得該子程序的程序i d以及它的終止狀態。又例如,如果程序建立了臨時檔案,那麼可能要

為s i g t e r m訊號編寫乙個訊號捕捉函式以清除臨時檔案( k i l l命令傳送的系統預設訊號是終止

訊號)。

(3) 執行系統預設動作。對大多數訊號的系統預設動作是終止該程序。

generation,訊號產生:首先,當造成訊號的事件發生時,為程序

產生乙個訊號(或向乙個程序傳送乙個訊號)。事件可以是硬體異常(例如除以 0)、軟體條件

(例如,鬧鐘時間超過)、終端產生的訊號或呼叫 k i l l函式。

delivery, 訊號遞送:在產生了訊號時,核心通常在程序

表中設定某種形式的乙個標誌。當對訊號做了這種動作時,我們說向乙個程序遞送了乙個訊號

pending,訊號未決:在訊號產生(g e n e r a t i o n)和遞送(d e l i v e r y)之間的時間間隔內,稱訊號未決(p e n d i n g);

程序可以選用「訊號遞送阻塞」。如果為程序產生了乙個選擇為阻塞的訊號,而且對該信

號的動作是系統預設動作或捕捉該訊號,則為該程序將此訊號保持為未決狀態,直到該程序

( a )對此訊號解除了阻塞,或者 ( b )將對此訊號的動作更改為忽略。

當遞送乙個原來被阻塞的訊號給程序時,而不是在產生該訊號時,核心才決定對它的處理方式

Linux基礎知識 1

ls 顯示檔案或目錄 l 列出檔案詳細資訊l list a 列出當前目錄下所有檔案及目錄,包括隱藏的a all mkdir 建立目錄 p 建立目錄,若無父目錄,則建立p parent cd 切換目錄 touch 建立空檔案 echo 建立帶有內容的檔案。cat 檢視檔案內容 cp 拷貝 mv 移動或...

LINUX基礎知識 1

有殼就有核,核值得是unix linux核心,shell是指提供給使用者使用介面的軟體 命令解析器 類似與dos下的command命令列和cmd.exe.叫做殼的原因是因為它隱藏了了系統底層的細節。在linux上shell是使用者互動介面,同時也是控制系統的指令碼語言 1.1使用者 建立使用者 su...

linux基礎知識 1

早期的計算機,多個使用者同時使用一台主機,每名使用者使用鍵盤和文字顯示器,通過串列埠與主機相連,這稱為終端。與linux建立會話需要提供使用者名稱和密碼進行登入。個人電腦普級後仍然保留了使用者 密碼 登入 終端這些核心概念,在linux中提供了6個虛擬終端。ctrl alt f1 ctrl alt ...