有名管道可以用於任何兩個程式間通訊,因為有名字可引用。注意管道都是單向的,因此雙方通訊需要兩個管道。
下面分別是這兩個程式**,同樣是lucy先執行,然後是peter。
fifolucy.c
#include
#include
#include
#include
#include
#include
#include
#include
int main()
write_fd = open(write_fifo_name, o_wronly);
if(write_fd == -1)
while((read_fd = open(read_fifo_name,o_rdonly)) == -1)
while(1)
write(write_fd, buf, strlen(buf));
len = read(read_fd, buf, 256);
if( len > 0) }}
fifopeter.c
#include
#include
#include
#include
#include
#include
#include
int main(void)
while((read_fd = open(read_fifo_name, o_rdonly)) == -1)
write_fd = open(write_fifo_name, o_wronly);
if(write_fd == -1)
while(1)
printf("peter: ");
fgets(buf, 256, stdin);
buf[strlen(buf)-1] = '/0';
if(strncmp(buf,"quit", 4) == 0)
write(write_fd, buf, strlen(buf));}}
有名管道管道程式設計
linux程序和程序之間有多種通訊方式。linux程序間通訊的主要方式有 1 無名管道 2 有名管道 3 訊號 4 訊息佇列 5 共享記憶體 6 訊號量 7 套接字 管道操作是比較簡單的通訊方式,乙個程序往管道中寫入資料,另乙個程序從管道中讀出資料。管道包括無名管道和有名管道。前者只能用於父程序和子...
Linux 有名管道
include apue.h 在當前目錄建立乙個管道檔案 main printf success to mkfifo ret d n ret return 0 include apue.h main printf success to open file fd d n fd 向有名管道中寫資料 wr...
linux 有名管道(FIFO)
管道的緩衝區是有限的 管道制存在於記憶體中,在管道建立時,為緩衝區分配乙個頁面大小 管道所傳送的是無格式位元組流,這就要求管道的讀出方和寫入方必須事先約定好資料的格式,比如多少位元組算作乙個訊息 或命令 或記錄 等等 多個寫程序,乙個讀程序。可以參考我之前的部落格 一旦設定了阻塞標誌,呼叫mkfif...