pipe建立的管道只能在具有共同祖先的程序間通訊,而mkfifo能在不相關的程序間交換資料。通俗舉例來說,乙個在乙個c檔案中通訊,乙個可在多個c檔案中通訊。
命名管道開啟的規則:
為讀開啟fifo:
o_nonblock disable:阻塞直到有相應程序為寫而開啟fifo
o_nonblock enable:立刻返回成功
為寫開啟fifo:
o_nonblock disable:阻塞直到有相應程序為讀而開啟fifo
o_nonblock enable:立刻返回失敗,錯誤碼為enxio
開啟檔案描述符預設為阻塞。
管道建立與寫管道程式:
#include
#include
#include
#include
#include
#define size 20
int main( int argc, char **argv )
if( (fd=open(argv[1], o_wronly)) == -1 )
write( fd, argv[2], size );
close( fd );
puts( "write success!" );
exit( 1 ); }
管道接收程式:
#include
#include
#include
#include
#include
#include
#define size 20
int main( int argc, char **argv )
while( 1 )
else
sleep( 1 ); }
}
建立有名管道
有名管道fifo管道在檔案系統中是可見的 建立函式 include include int mkfifo const char filename,mode t mode mode 用來指定建立的管道的讀寫執行許可權,一般設定為mode t mode 0666 利用命令列中乙個引數來建立乙個有名管道 ...
mkfifo 建立命名管道
mkfifo是乙個建立實名管道的函式 建立命名管道的方法為 mkfifo pipe。這樣就能建立乙個命名的管道pipe。表頭檔案 include include 定義函式 int mkfifo const char pathname,mode t mode 函式說明 mkfifo 會依引數pathn...
無名管道mkfifo 建立fifo1
include include include include include include include int main void int len 0 char buf 100 memset buf,0,sizeof buf 定義從fifo裡面讀的資料的緩衝 int fd open fifo...