linux程序間通訊 筆記

2021-10-01 12:39:11 字數 998 閱讀 9732

用於程序間通訊, 建立乙個管道,一端寫,一端讀

#include

intpipe

(int fildes[2]

);

fides[0]讀取,fides[1]寫入

成功返回0,失敗返回-1

示例**

#include

#include

#include

#include

#include

intmain()

pid_t pid =

fork()

;if(pid ==0)

else

if(pid >0)

getchar()

;return0;

}

通過在示例中新增額外**測試,可知:

管道讀入端會一直阻塞,直到有資料寫入才返回;

寫入端即使沒有讀入段,依舊能寫入,不阻塞。

如果多次寫入,讀取端一次能讀取到所有資料

通訊速度測試

#include

#include

#include

#include

#include

#include

intmain()

pid_t pid =

fork()

;if(pid ==0)

}else

if(pid >0)

}getchar()

;return0;

}

輸出結果:

0s, 85000ns

0s, 45000ns

0s, 43000ns

0s, 31000ns

0s, 40000ns

0s, 37000ns

0s, 32000ns

0s, 40000ns

...

大約通訊一次速度 35us

程序間通訊筆記 2

訊號量 訊號量一般配合其他方式一起使用,主要實現程序間的互斥與同步,而不是快取資料。訊號量表示資源的數量,控制訊號量的方式有兩種原子操作 p操作 將這個訊號量減一,減一後如果訊號量小於0代表資源已被占用程序需要阻塞等待。反之表明資源可用可以正常執行。v操作 把訊號量加一,加一後如果訊號量大於等於0代...

程序間通訊筆記(2) 管道和FIFO

管道 pipe 侷限在於沒有名字,只能用於親緣關係的程序使用。fifo 稱為有名管道 named pipe 跟套接字程式設計的套路類似,客戶 伺服器回射程式 這裡客戶從標準輸入 stdin 讀入乙個路徑名,並把它寫入ipc通道。伺服器開啟檔案,讀出其中內容,並寫入ipc通道作為對客戶的響應 客戶將伺...

程序間通訊筆記(4) SystemV 訊息佇列

systemv 訊息佇列使用訊息佇列識別符號標識,這個標識好像鍊錶中的頭節點,包含了許多資訊,當然最主要的還是指向資料節點的兩個指標msg first和msg last,分別表示訊息佇列中的第乙個和最後乙個訊息節點。操作systemv訊息佇列的函式。include include include i...