进程间通信(IPC,InterProcess Communication)

目前使用较多的几种方法:
1.管道(使用最简单)
2.信号(开销最小)
3.共享映射区(无血缘关系)
4.本地套接字(最稳定)

管道概念:

管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道,有如下特质:
  1.其本质是一个伪文件(实为内核缓冲区)
  2.由两个文件描述符引用,一个表示读端,一个表示写端。
  3.规定数据从管道的写端流入管道,从读端流出。

管道的原理:管道实为内核使用环形队列机制,借助内核缓冲区(4K)实现。

管道的局限性:
1.数据自己读不能自己写
2.数据一旦被读走,便不在管道中存在,不可反复读取。
3.由于管道采用半双工通信方式。因此,数据中能在一个方向上流动。
4.只能在有公共祖先的进程见使用管道。

#include <unistd.h>(包含的头文件)

int pipe(int pipefd[2]);
成功:0
失败:-1,设置errno

函数调用成功返回r/w两个文件描述符。无需open,但需手动close。规定fd[0] -> r fd[1]-> w
认真学习第二天 进程通信篇
ssize_t read(int fd, void *buf, size_t count);
失败:-1
成功:0
(如果返回值大于0,那么为读取的字节数)

ssize_t write(int fd, const void *buf, size_t count);
ssize_t read(int fd, void *buf, size_t count);

write(STDOUT_FILENO,buf,)写到屏幕

相关文章:

  • 2021-12-05
  • 2021-09-28
  • 2021-12-29
  • 2022-12-23
  • 2021-12-12
  • 2021-05-25
  • 2021-11-17
  • 2021-11-05
猜你喜欢
  • 2021-11-16
  • 2021-06-12
  • 2021-08-30
  • 2021-12-08
  • 2022-12-23
  • 2021-11-05
  • 2021-09-10
相关资源
相似解决方案