欢迎光临
我们一直在努力

Linux系统编程第六弹——进程间通信

同一主机内:

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被设置
赞(0)
未经允许不得转载:171主机测评 » Linux系统编程第六弹——进程间通信
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址