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 訊號。訊號進行程序間通訊方式有一點需要明確 訊號只能通知,不能在程序間共享資料資源。也就是說訊號僅僅是告訴你一下某個事情發生了。而我們的程式則可以對...