mkfifo是一个建立实名管道的函数。 mkfifo ()会依参数pathname建立特殊的FIFO文件,该文件必须不存在,而参数mode为该文件的权限(mode%~umask),因此 umask值也会影响到FIFO文件的权限。 Mkfifo ()建立的FIFO文件其他进程都可以用读写一般文件的方式存取。
mkfifo创建一个指定名字的FIFO,它的函数原型如下:
#include
int mkfifo(const char* pathname, mode_t mode)
返回值:成功,0;失败,-1
参数:
pathname指出想要创建的FIFO路径
mode指定创建的FIFO访问模式。这个访问会与当前进程的umask进程运算,以产生实际应用的权限模式。
mkfifo返回-1时表示创建过程中遇到某种错误,此时会设置errno,用户可以检测errno来取得进一步信息:
EACCES: 路径所在的目录不允许执行权限
EEXIST:路径已经存在,这时包括路径是一个符号链接,无论它是悬空还没有悬空。ENAMETOOLONG:要么全部文件名大于PATH_MAX,要么单独的文件名大于NAME_MAX。在GNU系统里没有这个文件名长度的限制,但在其它系统里可能存在。
ENOENT:目录部分不存在,或者是一个悬空链接。
ENOTDIR:目录部分不一个目录。EROFS:路径指向一个只读的文件系统。
归根结底是因为用的是共享文件夹,而window的文件系统又不支持管道文件。
创建的管道文件路径必须设为linux的本地文件夹。