Linux C 程序間的訊號通訊

2021-08-02 16:02:00 字數 1072 閱讀 6539

1、訊號通訊

核心中存在64種訊號,即linux 核心可以傳送64種訊號,命令「kill -l」可以檢視

a - 訊號的傳送:kill、raise、alarm

kill(pid_t pid, int sig)

raise(int sig)   等價於 kill(getpid(), int sig) 即發給自己

附:終止程序  kill 9 程序號   或 raise(9) 終止自己   (9為sigkill訊號)

alarm(int  n)  定時 n 秒

b - 訊號的接收:pause、sleep、while

c - 訊號的處理:signal

處理哪個訊號

以什麼方式處理(sig_ign忽略,sig_dfl預設,myfun自定義)

2、getpid() 獲得程序 id 號

getppid()獲得父程序 id 號

3、exit(0)           等價於 kill(getppid(), 17)  即,向父程序傳送 17 訊號(sigchld)

4、wait(null)     可**殭屍程序。本身為阻塞函式

**:

1 #include //standard input output

2 #include //pid_t pid; fork()

3 #include //signal

4 #include //exit(0) 否則會有warning警告

5 6 void myfun(int sig)

7 14 return;

15 }

16 17 void myfun1(int sig)

18 24

25 int main()

26 42 }

43 if(pid == 0)

44

51 return 0;

52 }

執行:

linux c開發(5 3)程序間通訊 訊號通訊

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

程序間通訊 訊號

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

程序間通訊(訊號)

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