mkfifo函式建立有名管道

2021-06-21 21:15:02 字數 887 閱讀 7580

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...