三 管道
管道分为:有名管道,无名管道
无名管道的创建使用pipe(2):
#include <unistd.h>
int pipe(int pipefd[2]);
功能:创建管道
参数:
pipefd[2]:管道的两个文件描述符。
pipefd[0]:读端
pipefd[1]:写端
返回值:
0 成功
-1 错误 errno被设置
举例验证代码使用pipe.c
1.父进程创建管道
2. fork(2创建子进程
3.父进程关闭写端,子进程关闭读端
4.子进程写,父进程读
无名管道中需要使用文件描述符,所以,无名管道应用于具有亲缘关系的进程间通信。
有名管道:实质是创建一个管道文件,一个进程向文件写数据,一个从文件中读数据。
代码参考:
结果:
创建有名管道需要使用mkfifo(3)
#include <sys/types.h>
#include <sys/stat.h>
int mkfifo(const char *pathname, mode_t mode);
功能:创建一个有名的管道文件
参数:
pathname:指定管道文件的名字
mode:指定管道文件的权限
返回值:
0 成功
-1 错误 errno被设置
举例子验证有名管道的进程间通信。
读:
创建并写:
补充:
带环境变量的加载映像。