linux 13程序間的通訊 管道

2021-09-29 22:05:15 字數 1731 閱讀 4743

開啟方式只有兩種,一種是唯讀,一種是只寫方式**

//建立乙個管道檔案:mkfifo  fifo

#include

#include

#include

#include

#include

#include

intmain()

;printf

("input:\n");

//讀取檔案

fgets

(buff,

128,

stdin);

if(strcmp

(buff,

"end",3

)==0)

write

(fd,buff,

strlen

(buff));

}//關閉檔案

close

(fd)

;exit(0

);}

只寫方式:

int

main()

;int n =

read

(fd,buff,

127);if

( n==0)

printf

("read:%s\n,buff");

}//關閉檔案

close

(fd)

;exit(0

);}

注:open有同步,需要一讀一寫才能開啟,若管道為空,讀會阻塞。管道寫端關閉,讀,read返回值為零。

1.pipe()建立無名管道

#include

#include

#include

#include

#include

#include

intmain()

;read

(fd[0]

,buff,

127)

;printf

("buff = %s\n"

,buff)

;close

(fd[0]

);clsoe

(fd[1]

);exit(0

);}//徹底關閉時需要關閉父子程序的所有檔案描述符

2.父程序只寫,子程序唯讀

int

main()

;//buff存放資料

if(read (fd[0]

,buff,

127)==0

)//讀取資料,知道返回值為零退出

printf

("child buff=%s\n"

,buff);}

close

(fd[0]

);exit(0

);}else

;fgets

(buff,

128,

stdin);

//從鍵盤獲取資料,if(

strcmp

(buff,

"end",3

)==0)

//只要不是end就寫入資料

write

(fd[1]

,buff,

strlen

(buff));

}close

(fd[1]

);exit(0

);}}

Linux程序間通訊 管道

linux程序間通訊機制 1.同一主機程序間通訊機制 unix方式 有名管道fifo 無名管道pipe 訊號signal systemv方式 訊號量 訊息佇列 共享記憶體 2.網路通訊 rpc remote procedure call socket 管道管道是程序間通訊中最古老的方式,它包括無名管...

Linux程序間通訊 管道

管道 管道是一種最基本的程序間通訊機制,由pipe函式建立 include intpipe int filedes 2 呼叫pipe函式時在核心中開闢一塊緩衝區 稱為管道 用於通訊,它有乙個讀端乙個寫端,然後通過filedes引數傳出給使用者程式兩個檔案描述符,filedes 0 指向管道的讀端,f...

Linux 程序間通訊 管道

程序間通訊 a程序怎樣將 hello world 傳遞給b程序 i 利用檔案實現 需要乙個 中間人 進行傳遞 檔案 在磁碟中儲存 a先呼叫open函式開啟檔案,再用write函式寫檔案,b用read函式讀取檔案,但問題如下 1.如果a傳送了資料b進行了接收,但a的資料沒有被清空 2.如果a傳送了資料...