<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="http://gentoo-zh.org/extern.php?action=feed&amp;tid=412&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[Gentoo中文社区 / 进程间通信的方式有哪些]]></title>
		<link>http://www.gentoo-zh.org/viewtopic.php?id=412</link>
		<description><![CDATA[进程间通信的方式有哪些 最近发表的帖子。]]></description>
		<lastBuildDate>Wed, 31 Aug 2022 07:12:24 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[进程间通信的方式有哪些]]></title>
			<link>http://www.gentoo-zh.org/viewtopic.php?pid=418#p418</link>
			<description><![CDATA[<p>进程间通信的方式有：</p><p>一、管道</p><p>管道，通常指无名管道，是 UNIX 系统IPC最古老的形式。</p><p>特点：</p><p>&#160; &#160; 它是半双工的（即数据只能在一个方向上流动），具有固定的读端和写端。</p><p>&#160; &#160; 它只能用于具有亲缘关系的进程之间的通信（也是父子进程或者兄弟进程之间）。</p><p>&#160; &#160; 它可以看成是一种特殊的文件，对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件，并不属于其他任何文件系统，并且只存在于内存中。</p><p>二、FIFO</p><p>FIFO，也称为命名管道，它是一种文件类型。</p><p>1、特点</p><p>&#160; &#160; FIFO可以在无关的进程之间交换数据，与无名管道不同。</p><p>&#160; &#160; FIFO有路径名与之相关联，它以一种特殊设备文件形式存在于文件系统中。</p><p>三、消息队列</p><p>消息队列，是消息的链接表，存放在内核中。一个消息队列由一个标识符（即队列ID）来标识。</p><p>特点</p><p>&#160; &#160; 消息队列是面向记录的，其中的消息具有特定的格式以及特定的优先级。</p><p>&#160; &#160; 消息队列独立于发送与接收进程。进程终止时，消息队列及其内容并不会被删除。</p><p>&#160; &#160; 消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按消息的类型读取。</p><p>四、信号量</p><p>信号量（semaphore）与已经介绍过的 IPC 结构不同，它是一个计数器。信号量用于实现进程间的互斥与同步，而不是用于存储进程间通信数据。</p><p>特点</p><p>&#160; &#160; 信号量用于进程间同步，若要在进程间传递数据需要结合共享内存。</p><p>&#160; &#160; 信号量基于操作系统的 PV 操作，程序对信号量的操作都是原子操作。</p><p>&#160; &#160; 每次对信号量的 PV 操作不仅限于对信号量值加 1 或减 1，而且可以加减任意正整数。</p><p>&#160; &#160; 支持信号量组。</p><p>五、共享内存</p><p>共享内存（Shared Memory），指两个或多个进程共享一个给定的存储区。</p><p>特点</p><p>&#160; &#160; 共享内存是最快的一种 IPC，因为进程是直接对内存进行存取。</p><p>&#160; &#160; 因为多个进程可以同时操作，所以需要进行同步。</p><p>&#160; &#160; 信号量+共享内存通常结合在一起使用，信号量用来同步对共享内存的访问。</p>]]></description>
			<author><![CDATA[dummy@example.com (batsom)]]></author>
			<pubDate>Wed, 31 Aug 2022 07:12:24 +0000</pubDate>
			<guid>http://www.gentoo-zh.org/viewtopic.php?pid=418#p418</guid>
		</item>
	</channel>
</rss>
