Linux程序間通訊(一)管道

2021-07-09 18:39:29 字數 865 閱讀 9871

乙個程序在管道的尾部寫入資料,另乙個程序從管道的頭部讀出資料。

管道包括無名管道和有名管道兩種,前者只能用於父程序和子程序間的通訊,後者可用於執行於同一系統中

的任意兩個程序間的通訊。

管道通訊-特點

管道通訊是單向的,有固定的讀端和寫端。

資料被程序從管道讀出後,在管道中該資料就不存在了。

當程序去讀取空管道的時候,程序會阻塞。

當程序往滿管道寫入資料時,程序會阻塞。

管道容量為

核心定義的

(#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 引數...