1、介绍FIFO(命名管道)
管道有局限性,只能在具有亲缘关系的进程间通信,但是命名管道克服了这个问题,可以实现无亲缘关系的进程之间的通信
API介绍:
/* FIFO 命名管道 */ /* * 函数功能:功能和管道类似; * 返回值:若成功则返回0,若出错则返回-1; * 函数原型: */ #include <sys/stat.h> int mkfifo(const char *pathname, mode_t mode); /* * 说明: * 参数mode和open函数的mode参数一样; * pathname:一个 Linux 路径名,它是 FIFO 的名字。即每个 FIFO 与一个路径名相对应。 * mode:指定的文件权限位,类似于 open 函数的第三个参数。 * 即创建该 FIFO 时,指定用户的访问权限,可以取以下值: * S_IRUSR,S_IWUSR,S_IRGRP,S_IWGRP,S_IROTH,S_IWOTH。 * 该函数创建一个FIFO之后,就可用open函数打开; */
mkfifo 函数默认指定 O_CREAT | O_EXECL 方式创建 FIFO,如果创建成功,直接返回0。如果 FIFO 已经存在,则创建失败,会返回-1