进程间通信 (ipc)

  IPC:interprocess communication-进程间通信

       Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全 局变量在另一个进程中都看不到,所以进程和进程间不能互相访问,要交换数据必须通过内核,在内核中开辟一块缓存区,进程1把数据从用户空间拷贝到内存缓冲区,进程2再从内存缓冲区中把数据读走,内核提供的这种机制称为进程间通信(IPC)。

进程间通信

   数据传输

    资源共享

    事件通知

    进程控制

Linux 系统下的ipc (Linux IPC / 分类_Ruo_Xiao的博客-CSDN博客)

         POSIX,Portable Operating System Interface for UNIX,是IEEE(电子电气工程师协会)为了在各种UNIX操作系统上运行软件而定义的一系列API标准总称,正式称呼为IEEE 1003,国际标准名称为ISO/IEC 9945。

分类:

1、匿名管道 / 有名管道:pipe、FIFO

2、信号:signal

3、消息队列:message queue

4、信号量:simaphore

5、共享内存区:shared memory

6、套接字:socket
     记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背_帅地的博客-CSDN博客

IPC方法比较 (Linux下IPC总结_huygft的博客-CSDN博客)

    pipe-优点:实现简单;缺点:单向通信,只能用于有血缘关系进程间。

    fifo-优点:可以在非血缘关系进程间。

    信号-优点:开销小。

    共享内存-优点:可以用于非血缘关系进程间;缺点:比较复杂。

    本地套接字-优点:稳定性好;缺点:实现复杂。

    共享内存和fifo的区别:在于数据是否可以反复读取;fifo是用队列实现的,不能反复读取;共享内存是Linux内核借助缓冲区,通过内存来实现,可以反复读取。
 



匿名/无名管道 (Linux进程通信----匿名管道)

pipe函数

 

特点

使用步骤

关于匿名管道的几点说明:

  1.匿名管道是半双工的,即一个进程只能读,一个进程只能写要实现全双工,需要两个匿名管道。

  2.只能在父子进程或者兄弟进程进行通信。

  3.在读的时候关闭写文件描述符,在写的时候关闭读文件描述符



有名管道

特点

使用步骤

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值