Linux进程通信
想飞大白菜
这个作者很懒,什么都没留下…
展开
-
Linux环境进程间通信(一):管道及有名管道
1、 管道概述及相关API应用错误!超链接引用无效。 1.1 管道相关的关键概念 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: • 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; • 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); • 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是转载 2015-04-28 14:41:55 · 262 阅读 · 0 评论 -
Linux环境进程间通信(五):共享内存(上)
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:一次从输入文件到共享内存区,另一次从共享内存区到输出文件。实际上,进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时,再重新建立共享内存区域。而是保持共享区域,直到通信完毕为止,这转载 2015-04-28 14:50:50 · 322 阅读 · 0 评论 -
Linux环境进程间通信(二):信号(下)
1、信号生命周期从信号发送到信号处理函数的执行完毕对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生;信号在进程中注册完毕;信号在进程中的注销完毕;信号处理函数执行完毕。相邻两个事件的时间间隔构成信号生命周期的一个阶段。下面阐述四个事件的实际意义:1. 信号"诞生"。信号的诞生指的是触发信号的事件发生(如检转载 2015-04-28 14:47:25 · 293 阅读 · 0 评论 -
Linux进程通信总结(linux进程间通信的几种机制的比较及适用场合)
linux进程间通信的几种机制的比较及适用场合 1.# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问转载 2015-04-28 14:55:16 · 3435 阅读 · 0 评论 -
Linux环境进程间通信(三):消息队列
消息队列(也叫做报文队列)能够克服早期unix通信机制的一些缺点。作为早期unix通信机制之一的信号能够传送的信息量有限,后来虽然POSIX 1003.1b在信号的实时性方面作了拓广,使得信号在传递信息量方面有了相当程度的改进,但是信号这种通信方式更像"即时"的通信方式,它要求接受信号的进程在某个时间范围内对信号做出反应,因此该信号最多在接受信号进程的生命周期内才有意义,信号所传递的信息是接近于随进转载 2015-04-28 14:48:44 · 282 阅读 · 0 评论 -
Linux环境进程间通信(二):信号(上)
1、信号及信号来源1.1信号本质 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本转载 2015-04-28 14:45:12 · 409 阅读 · 0 评论 -
七.Linux环境进程间通信(五):共享内存(下)
系统调用mmap()通过映射一个普通文件实现共享内存。系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信。也就是说,每个共享内存区域对应特殊文件系统shm中的一个文件(这是通过shmid_kernel结构联系起来的),后面还将阐述。1、系统V共享内存原理进程间需要共享的数据被放在一个叫做IPC共享内存区域的地方,所有需要访问该共享区域的进程都要把该共享区域映射到本进程的地址空间转载 2015-04-28 14:51:56 · 359 阅读 · 0 评论 -
Linux环境进程间通信(四):信号灯
1、信号灯概述信号灯与其他进程间通信方式不大相同,它主要提供对进程间共享资源访问控制机制。相当于内存中的标志,进程可以根据它判定是否能够访问某些共享资源,同时,进程也可以修改该标志。除了用于访问控制外,还可用于进程同步。信号灯有以下两种类型:• 二值信号灯:最简单的信号灯形式,信号灯的值只能取0或1,类似于互斥锁。 注:二值信号灯能够实现互斥锁的功能,但两者的关注内容不同。信号灯强调共享资转载 2015-04-28 14:48:37 · 314 阅读 · 0 评论