Windows&Linux下进程间通信的方式

本文介绍了Windows和Linux下进程间通信的多种方式,包括管道(无名和有名)、消息队列、共享内存、信号量、套接字和信号。管道适用于父子进程通信,有名管道扩展到任意进程;消息队列类似管道但更灵活;共享内存提供快速通信,减少数据复制;信号量用于资源同步和控制;套接字是通用的进程间通信方式,支持远程和本地通信;信号则用于传递事件通知。
摘要由CSDN通过智能技术生成

1、管道

管道又分无名管道和有名管道,无名管道用于父进程与子进程间的通信,有名管道用于同一台计算机中任意两个进程间的通信。管道的缺点是只支持单向数据流。

2、消息队列

  消息队列用于运行于同一台机器上的进程间通信,它和管道很相似,是一个在系统内核中用来保存消息的队列,它在系统内核中是以消息链表的形式出现。消息链表中节点的结构用msg声明。

3、共享内存

  共享内存是运行在同一台机器上的进程间通信最快的方式,因为数据不需要在不同的进程间复制。通常由一个进程创建一块共享内存区,其余进程对这块内存区进行 读写。得到共享内存有两种方式:映射/dev/mem设备和内存映像文件。前一种方式不给系统带来额外的开销,但在现实中并不常用,因为它控制存取的将是 实际的物理内存,在Linux系统下,这只有通过限制Linux系统存取的内存才可以做到,这当然不太实际。共享内存是最快的进程通信方式,是专门为应对其他进程间通信低效而设计的。

4、信号量

信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是前面提到的共享内存方式的进程间通信。本质上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况。一般说来,为了获得共享资源,进程需要执行下列操作:
   (1) 测试控制该资源的信号量。
   (2) 若此信号量的值为正,则允许进程使用该资源。进程将信号量减1。
   (3) 若此信号量为0,则该资源目前

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值