历程通信之管道通信
进程通信之管道通信1》无名管道无名管道只能用于父进程与子进程间通信,由pipe函数建立管道。语法如下。#inclu
进程通信之管道通信
1》无名管道
无名管道只能用于父进程与子进程间通信,由pipe函数建立管道。语法如下。
#include<unistd.h>
int pipe_f[2]; 储存文件描述符
int pipe(pipe_f); 创建管道
管道即类似临时文件,描述符存储在pipe_f二元数组内。其中pipe_f[0]为读管道,pipe_f[1]为写管道。从管道中读写数据可用文件操作函数。
类似文件中,close函数可关闭管道。
另外,需要注意,使用此管道通信时应在调用fork之前创建。
2》命名管道
命名管道可以应用于任意两个进程之间
int mkfifo(char *pathname,mode_t mode);
pathname为文件路径,mode_t为文件模式符,参见文件操作。使用此函数实际上即创建了,pathname路径中的文件。在头文件“sys/types.h”与"sys/stat.h"中。
此外,还有mode还有一个参数需要注意,见图:
由以上可见管道实际上就是一种特殊的文件,对管道操作时也即使用与文件操作相同的
方法,如write、read等等。但是需要注意的是,管道特殊之处在于,在对管道读操作的时候,会将
读过的内容删除,这也符合了管道的这个名称。