關於訊號在程序間的通訊,這是乙個比較複雜的東西,本人不在這裡做過多的介紹.....如果想系統的學習,請參考《unix環境高階程式設計這本書》
我在這裡只展示幾個例子:
用守護程序實現檔案的同步...由子程序1改乙個檔案,守護程序2,檢查到檔案已經改變,並通過訊號告訴給父程序,父程序實現輸出....程式有點複雜,但思路還是比較清晰的
守護程序的建立:
在daemonize.h檔案中
#include
#include
#include
#include
#include
#include
void daemonize(const char *cmd)
if((pid = fork())<0)
else if(pid != 0)
exit(0);
setsid();
sa.sa_handler = sig_ign;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
if(sigaction(sighup,&sa,null) < 0)
if((pid = fork())<0)
else if(pid != 0)
exit(0);
if(chdir("/") < 0)
if(r1.rlim_max == rlim_infinity)
r1.rlim_max = 1024;
for(i = 0;i < r1.rlim_max;i++)
close(i);
fd0 = open("/dev/null",o_rdwr);
fd1 = dup(0);
fd2 = dup(0);
openlog(cmd,log_cons,log_daemon);
if(fd0 != 0 || fd1 != 1 || fd2 != 2)
}主程式的實現,訊號通性
程序間通訊(訊號)
linux系統程序間通訊有很多種方式 較多使用的有訊號,管道以及system vipc。各種通訊方式各有優缺點。這部分主要就程序間通訊方式進行總結。1 訊號。訊號進行程序間通訊方式有一點需要明確 訊號只能通知,不能在程序間共享資料資源。也就是說訊號僅僅是告訴你一下某個事情發生了。而我們的程式則可以對...
程序間通訊 訊號
訊號 概念 訊號是在軟體層次上對中斷機制的一種模擬,它是比較複雜的通訊方式,用於通知程序有某事件發生,乙個程序收到乙個訊號與處理器收到乙個中斷請求效果上可以說是一致的。程序在接收到這個訊號以後,可以設定響應的處理動作 忽略或者呼叫函式進行處理。在linux下命令列 kill l 可以檢視linux下...
程序間通訊 訊號
訊號是程序間通訊機制中唯一的非同步通訊機制,linux系統產生訊號以響應某些條件,當乙個程序接收 捕獲 到乙個訊號會採取相應的行動。其 有兩種 一,硬體,如按下鍵盤或者硬體故障。二,軟體,呼叫傳送訊號的函式 kill,alarm,raise 訊號的種類有以下 1.響應訊號的函式 include 捕獲...