乙個程序在管道的尾部寫入資料,另乙個程序從管道的頭部讀出資料。
管道包括無名管道和有名管道兩種,前者只能用於父程序和子程序間的通訊,後者可用於執行於同一系統中
的任意兩個程序間的通訊。
管道通訊-特點
管道通訊是單向的,有固定的讀端和寫端。
資料被程序從管道讀出後,在管道中該資料就不存在了。
當程序去讀取空管道的時候,程序會阻塞。
當程序往滿管道寫入資料時,程序會阻塞。
管道容量為
核心定義的
(#define pipe_buffer include/linux/pipe_fs_i.h)
無名管道
在linux系統中,無名管道一旦建立完成後,操作無名管道
等同於操作檔案,因此可以使用read,write,close等函式來
訪問無名管道。無名管道的讀端被視作乙個檔案;無名管道的寫端也被視作乙個檔案。通常,程序會先呼叫pipe,接著呼叫fork,從而建立從父程序到子程序的ipc通道,反之亦然。
#include #include #include #include #include int main(int argc, char *argv)
if(pipe(pipefd) == -1) //pipe需要在fork前呼叫
if((pid = fork()) < 0)
else if(pid == 0) /* child reads from pipe */
else /* parent writes argv[1] to pipe */
}
程序間通訊(一) 管道
一,用管道進行父子程序通訊 include include define maxline 120 define msginfo hurry up n int main void pid t pid if pipe fd 0 if pid fork 0 if pid 0 father write st...
Linux IPC程序間通訊 一 管道
系列文章 linux ipc程序間通訊 一 管道 linux ipc程序間通訊 二 共享記憶體 linux ipc程序間通訊 三 訊號量 linux ipc程序間通訊 四 訊息佇列 linux程序間通訊 ipc 的乙個重要方法就是管道,在學習管道之前,要理解兩個概念 不論是無名管道還是有名管道,都屬...
IPC程序間通訊 一 管道
ipc inter process communication 管道 訊號 共享記憶體 訊息佇列 資訊量 套接字 管道分為 無名 匿名 管道和有名 命名 管道 區別 缺點 侷限於父子程序間的通訊且會發生阻塞 fcntl 步驟建立 pipe 函式原型 int pipe int filedes 2 引數...