程序間的通訊就麻煩一些了,訊號的種類就有64種,可以在終端中輸入kill -l檢視!
就先說幾個今天剛學的吧
1.sigint,這個訊號是由硬體產生的,比如按下ctrl+c時就會產生這個訊號。
2.sigalrm,這個訊號是由alrm(unsigned int arg)函式產生的,就是間隔arg秒時間後產生sigalrm訊號。
3.sigchld.子程序退出時會產生這個訊號。
訊號產生後必須有乙個函式去接這個訊號,這個函式就是signal(int signum,sighandler_t handler)函式。第乙個引數是訊號型別,比如sigint.第二個引數是執行方式,執行方式有3種,sig_ign表示忽略訊號,sig_dfl表示按預設執行,還有就是可以填執行函式的入口位址.
必須注意!!!對訊號的註冊函式signal必須在訊號產生之前就已經註冊好,還有就是pause()函式可以等待訊號的產生.然後再執行後面的**.
這裡就只寫乙個簡單的例子吧
#include #include #include #include void some_signal(int sig)
int main()
return 0;
}
正常執行,會列印
如果在子程序結束之前按ctrl+c就會列印alrm signal
chile end signal
the ctrl+c signal
這裡要注意,在乙個程序中用alarm函式,在另乙個程序中是收不到訊號的,當然不是說sigalrm不能在不同程序間傳遞,而是alarm這個函式的原因,如果在子程序用kill(getppid,sigalrm),父程序signal(sigalrm,function)就能收到.
php程序間通訊 yoc PHP程序間通訊
php是用c編寫的,因此它對系統底層api的操作與c很像,同大多數語言一樣,php程序間通訊的方式有以下幾種 訊息佇列,管道,共享記憶體,socket和訊號。本文是對這幾種通訊方式對整理 管道通訊pipe 管道用於承載簡稱之間的通訊資料。為了方便理解,可以將管道比作檔案,程序a將資料寫到管道p中,然...
程序間的通訊
可以用來通訊的有 管道 pipe 管道可用於具有親緣關係程序間的通訊,允許乙個程序和另乙個與它有共同祖先的程序之間進行通訊。命名管道 named pipe 命名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關係程序間的通訊。命名管道在檔案系統中有對應的檔名。命名管道通過...
程序間的通訊
4 無名管道和有名管道的聯絡和區別 5 各個通訊方式的講解 程序間通訊 ipc,interprocess communication 是一組程式設計介面,讓程式設計師能夠協調不同的程序,使之能在乙個作業系統裡同時執行,並相互傳遞 交換資訊。這使得乙個程式能夠在同一時間裡處理許多使用者的要求。因為即使...