Linux C通訊間程序(預習內容二)

2021-07-22 21:22:51 字數 1209 閱讀 6750

現在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 建立新的訊息佇列。建立 在以下兩種情況下,...