程序間通訊 訊號

2021-09-27 13:34:46 字數 1582 閱讀 7157

訊號

訊號是在軟體層次上對中斷機制的一直模擬,是一種非同步通訊方式

linux核心通過訊號通知使用者程序, 不同的訊號型別代表不同的事件

程序對訊號有不同的響應方式

預設方式

忽略訊號

捕捉訊號

sigkill和sigstop這兩個訊號量 級別很高 只能執行預設操作 不能**捉和忽略

kill [-signal] pid

pid 傳送物件(程序號或程序組 -1 代表除當前程序和int程序之外 其他都傳送該訊號)

-signal 可指定訊號

向乙個程序傳送訊號(預設傳送15訊號 也就是結束程序)

killall [-u user | prog]

prog指定程序號

-u user 指定使用者名稱

預設傳送訊號15

傳送訊號

#include

#include

int kill(pid_t pid, int sig);

int raise(int sig);(只能向當前程序發訊號)

成功返回0 失敗返回eof

pid 接收程序的程序號· 0代表同組程序 -1代表所有程序

sig 訊號型別

int alarm(unsinged int seconds)

成功返回上乙個定時器的剩餘時間 失敗返回eof

seconds 定時器的時間 如果值為0 代表取消這個定時器

乙個程序中只能設定乙個定時器 時間到時 產生sigalrm(預設結束程序)

int pause(void)

程序一直阻塞 直到被訊號中斷

被訊號中斷後 返回-1 error為eintr

設定訊號響應方式

#include

#include

void (*signal(int signo, void (*handler)(int)))(int);

成功返回原先的訊號處理函式 失敗返回 sig_err

sigo 要設定的訊號型別

handler 指定的訊號處理函式: sig_dfl代表預設方式

sig_ign代表忽略訊號

**示例

程序間通訊 訊號

關於訊號在程序間的通訊,這是乙個比較複雜的東西,本人不在這裡做過多的介紹.如果想系統的學習,請參考 unix環境高階程式設計這本書 我在這裡只展示幾個例子 用守護程序實現檔案的同步.由子程序1改乙個檔案,守護程序2,檢查到檔案已經改變,並通過訊號告訴給父程序,父程序實現輸出.程式有點複雜,但思路還是...

程序間通訊(訊號)

linux系統程序間通訊有很多種方式 較多使用的有訊號,管道以及system vipc。各種通訊方式各有優缺點。這部分主要就程序間通訊方式進行總結。1 訊號。訊號進行程序間通訊方式有一點需要明確 訊號只能通知,不能在程序間共享資料資源。也就是說訊號僅僅是告訴你一下某個事情發生了。而我們的程式則可以對...

程序間通訊 訊號

訊號 概念 訊號是在軟體層次上對中斷機制的一種模擬,它是比較複雜的通訊方式,用於通知程序有某事件發生,乙個程序收到乙個訊號與處理器收到乙個中斷請求效果上可以說是一致的。程序在接收到這個訊號以後,可以設定響應的處理動作 忽略或者呼叫函式進行處理。在linux下命令列 kill l 可以檢視linux下...