同一主机内:
1.进程间通信方式
管道
- 无名管道
- 有名管道
信号
系统的进程间通信方式
共享内存
通信效率最高的通信方式 消息队列 信号量
不同主机间:
专门应用场景
多进程间的信号量 1/3.网络的通信socket
进程间通信原理(本质):
1/进程拥有独立的4G内容空间 共享了 内核空间]—都需要借助内核空间完成通信
管道
- 无名管道
- 有名管道
流程
- 1.建立一条管道
- 2.通过管道读写
无名管道pipe
#include<unistd.h>
int pipe(int pipefd[2]);
功能:
在内核创建一条管道
参数:
pipefd /获得管道得读端和写端
返回值:
- 成功0
- 失败 -1 8& errno 被设置
无名管道 — pipe
#include <unistd.h>
int pipe(int pipefd[2]);
功能:
在内核创建一条管道
参数:
- @pipefd //获得管道得读端和写端
- //pipefd[0] —读端 — 文件描述符
- //pipefd[1] —写端 — 文件描述符
返回值:
- 成功 0
- 失败 -1 && errno 被设置
有名管道 — 可以用于任意两个进程间(亲缘 和 非亲缘都可以–只要用的是同一个管道)
特性:
1.特殊文件
2.不占用磁盘空间,因为它得空间在内核(内存空间)
3.使用思路
- 1.打开 –fp / fd
- 2.读/写
- 3.关闭
int mkfifo(const char *pathname, mode_t mode);
功能: 创建管道文件
参数:
- @pathname 管道文件得名字
- @mode 创建得权限 0666
返回值:
- 成功 返回 0
- 失败 -1 && errno被设置




