《Linux函數調用手冊》之___mkfifo建立具名管道
定義:
int mkfifo(const char * pathname,mode_t mode);
表頭文件:
#include<sys/types.h>
#include<sys/stat.h>
說明:
mkfifo()會依參數pathname建立特殊的FIFO文件, 該文件必須不存在, 而參數mode為該文件的權限(mode%~umask), 因此umask值也會影響到FIFO文件的權限。Mkfifo()建立的FIFO文件其他進程都可以用讀寫一般文件的方式存取。當使用open()來打開FIFO文件時, O_NONBLOCK旗標會有影響
1、當使用O_NONBLOCK 旗標時, 打開FIFO 文件來讀取的操作會立刻返回, 但是若還沒有其他進程打開FIFO 文件來讀取, 則寫入的操作會返回ENXIO 錯誤代碼。
2、沒有使用O_NONBLOCK 旗標時, 打開FIFO 來讀取的操作會等到其他進程打開FIFO文件來寫入才正常返回。同樣地, 打開FIFO文件來寫入的操作會等到其他進程打開FIFO 文件來讀取后才正常返回。
返回值:
若成功則返回0, 否則返回-1, 錯誤原因存于errno中。
相關函數:
pipe, popen, open, umask
錯誤代碼:
EACCESS 參數pathname所指定的目錄路徑無可執行的權限
EEXIST 參數pathname所指定的文件已存在。
ENAMETOOLONG 參數pathname的路徑名稱太長。
ENOENT 參數pathname包含的目錄不存在
ENOSPC 文件系統的剩余空間不足
ENOTDIR 參數pathname路徑中的目錄存在但卻非真正的目錄。
EROFS 參數pathname指定的文件存在于只讀文件系統內。
示例:
執行:
hello!
返回頂部 | 《Linux函數調用大全》 | 《Linux命令大全》 | Linux專欄 广西11选五走势图彩经网