无名管道:
1.数据只能在一个方向上流动
2.管道数据,读走了就没了
pipe(建立管道)
需要的头文件:
#include <unistd.h>
参数原型:
int pipe(int pipefd[2]);
fd[0]:为管道的读取端
fd[1]:为管道的写入端
例如:pipe(fd)
返回值:成功返回0,
失败返回-1
关闭管道,只需把两个文件描述符关闭即可。
命名管道(单向):
mkfifo(建立命名管道):
需要的头文件:
#include <sys/types.h>
#include <sys/stat.h>
参数原型:
int mkfifo(const char *pathname, mode_t mode);
pathname:建立FIFO文件,该文件必须不存在
mode:文件的权限
例如:mkfifo("./file",0600);
返回值:成功返回0
失败返回-1
创建的是文件类型
可以用open打开
一般需要堵塞(才能有输入输出)
open打开方式:
使用open只读或者只写方式打开一般都会阻塞(加上O_NONBLOCK就不阻塞)
如果以读写方式打开,则一定不阻塞。