程序間的通訊

2021-06-08 04:35:00 字數 925 閱讀 7264

程序間的通訊就麻煩一些了,訊號的種類就有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;

}

正常執行,會列印

alrm signalchile end signal
如果在子程序結束之前按ctrl+c就會列印

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 是一組程式設計介面,讓程式設計師能夠協調不同的程序,使之能在乙個作業系統裡同時執行,並相互傳遞 交換資訊。這使得乙個程式能夠在同一時間裡處理許多使用者的要求。因為即使...