FIFO文
#include
#include
int mkfifo( const char*pathname, mode_t mode);
参数:
pathname:FIFO的路径名+文件名。
mode:mode_t类型的权限描述符,同open的参数。
返回值:
成功:返回0
失败:如果文件已经存在,则会出错且返回-1。
操作FIFO文件时的特点:
系统调用的I/O函数都可以作用于FIFO,如open、close、read、write等。
打开FIFO时,非阻塞标志(O_NONBLOCK)产生下列影响:
特点一:不指定O_NONBLOCK(即open没有位或O_NONBLOCK)
1、open以只读方式打开FIFO时,要阻塞到某个进程为写而打开此FIFO
2、open以只写方式打开FIFO时,要阻塞到某个进程为读而打开此FIFO。
3、open以只读、只写方式打开FIFO时会阻塞,调用read函数从FIFO里读数据时read也会阻塞。
4、调用write函数向FIFO里写数据,当缓冲区已满时write也会阻塞。
5、通信过程中若写进程先退出了,则调用read函数从FIFO里读数据时不阻塞;若写进程又重新运行,则调用read函数从FIFO里读数据时又恢复阻塞。
6、通信过程中,读进程退出后,写进程向命名管道内写数据时,写进程也会(收到SIGPIPE信号)退出。
特点二:指定O_NONBLOCK(即open位或O_NO