現在linux使用的程序間通訊方式包括:1.管道(pipe)和有名管道(fifo)
2.訊號(signal)
3.訊息佇列
4.共享記憶體
5.訊號量
6.套接字(socket)
管道通訊:
管道是單向的、先進先出的,它把乙個程序的輸出和另乙個程序的輸入連線在一起。乙個程序(寫程序)在管道的尾部寫入資料,另乙個程序(讀程序)從管道的頭部讀出資料。
資料被乙個程序讀出後,江背從管道中刪除,其它讀程序將不能再讀到這些資料。管道提供了簡單的流控制機制,程序試圖讀空管道時,程序將阻塞。同樣,管道已經滿時,程序再試圖向管道寫入資料,程序將阻塞。
管道包括無名管道和有名管道兩種,前者用於父程序和子程序間的通訊,後者可用於執行於同一系統中的任意兩個程序間的通訊。
無名管道由pipe()函式建立:
int pipe(int filedis[2]);
當乙個管道建立時,它會建立兩個檔案描述符:filedis[0]用於讀管道,filedis[1]用於寫管道。
#include
#include
#include
#include
int main()
else
printf("pipe create success\n");
close(pipe_fd[0]);
close(pipe_fd[1]);
}
Linux C程序間通訊(預習內容四)
訊號型別 常見的訊號 sighup 從終端上傳送的結束訊號 sigint 來自鍵盤的中斷訊號 ctrl c sigkill 該訊號結束結束訊號的程序 sigterm kill命令發出的訊號 sigchld 標示子程序停止或結束的訊號 sigstop 來自鍵盤 ctrl z 或除錯程式的停止執行訊號 ...
Linux C程序間通訊(預習內容六)
共享記憶體 是被多個程序共享的一部分物理記憶體。共享記憶體是程序間共享資料的一種最快的方法,乙個程序向共享記憶體區域寫入了資料,共享這個記憶體區域的所有程序就可以立刻看到其中的內容。共享記憶體實現分為兩個步驟 一 建立共享記憶體,使用shmget函式。二 對映共享記憶體,將這段建立的共享記憶體對映到...
Linux C程序間通訊(預習內容八)
開啟 建立 include include include int msgget key t key,int msg 返回乙個msgget 的id key 鍵值,由ftok獲得。msg 標誌位。返回值 與健值key相對應的訊息佇列描述字。ipc creat 建立新的訊息佇列。建立 在以下兩種情況下,...