開啟方式只有兩種,一種是唯讀,一種是只寫方式**
//建立乙個管道檔案: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傳送了資料...