Linux 程序通訊 訊號

2021-07-24 03:40:32 字數 2381 閱讀 5947

linux –程序通訊--訊號

模擬:乙個程序收到訊號與乙個處理器收到乙個中斷請求可以說一樣的,訊號是非同步的,乙個程序不必通過任何操作來等待訊號的到達,事實上,程序也不知道訊號是什麼時候到達。

常見訊號:

sighup:從終端發出的訊號

sigint:來自鍵盤中斷訊號

sigkill:訊號結束接受訊號程序,殺死程序

sigterm:kill命令發出訊號

sigstop:暫停程序

注意點:

1,sigkill與sigstop是不能忽略的。

2,執行使用者希望的動作

3,執行系統預設的動作

操作函式:

kill函式

函式作用:傳送訊號給指定的程序

函式原型:intkill(pid_t pid,int sig)

函式引數:pid:>0指定的程序pid

=0傳送給目前程序相同程序組的所有程序

=-1廣播給系統內所有的程序

sig:訊號

返回值:成功0,失敗-1

標頭檔案:#include

#include

rasie

函式作用:傳送訊號給自身

函式原型:int  raise(int sig)

標頭檔案:#include

alarm

函式作用:設定訊號傳送鬧鐘

函式原型:unsignedint alarm(unsigned int seconds)

函式引數:傳送給程序的秒數,如果為0,那麼之前設定的鬧鐘就會被取消,並將剩下的時間返回

返回值:返回之前鬧鐘的剩餘秒數。

pause

函式作用:讓程序暫停,直到訊號被中斷

函式原型;intpause(void);

返回值;-1

signal

函式作用:設定訊號的方式

函式原型:void(*signal(int signum ,void(*handler)(int)))(int)

函式引數:signum:指定的訊號編號來設定訊號的處理函式,當指定的訊號到達時,就會跳轉到引數handler指定的函式執行。

handler不是函式指標,也必須是這兩個引數:

sig_ign:忽略引數signum指定的訊號

sig_dfl: 將引數signum指定的訊號重設為核心預設的訊號處理方式。

返回值:成功:先前的訊號處理函式指標,如果有錯誤則返回sig_err(-1)

截圖:

Linux程序通訊 訊號通訊

訊號 signal 機制是unix系統中最為古老的程序間通訊機制,很多條件可以產生乙個訊號 1 當使用者按某些按鍵時,產生訊號 2 硬體異常產生訊號 除數為0 無效的儲存訪問等等。這些情況通常由硬體檢測到,將其通知核心,然後核心產生適當的訊號通知程序,例如 核心對正訪問乙個無效儲存區的程序產生乙個s...

Linux程序通訊 訊號

1.程序 在介紹訊號的概念之前,先簡單的介紹一下程序的概念 程序可以理解為一段正在執行的程式,它包括以下三個部分內容 1 一段正在執行的程式 2 與該段程式相關聯的全部資料 資料空間,記憶體,緩衝區 3 程式計數器 pc 2.訊號 可以這麼理解訊號,訊號本身不是訊息,它表達的內容才是訊息。linux...

linux程序通訊 訊號

1.訊號的分類,常用的幾種訊號 訊號的分類 可靠性方面 可靠訊號和不可靠訊號 與時間上的關係 實時訊號與非實時訊號 常見的訊號 sighup 從終端上發出的結束訊號 sigint 來自鍵盤的中斷訊號 ctrl c sigkill 該訊號結束接收訊號的程序,殺死程序 sigterm kill 命令發出...