进程间通信 IPC是进程间通信的简称,指的是运行在某个操作系统上的不同进程间各种消息传递方式,在Unix操作系统过去30年的演变史中,消息传递经历了如下几个阶段:管道,管道是第一个广泛使用的IPC形式,管道分为有名管道和无名管道,无名管道只可以在父子进程间通信,有名管道可以在非父子进程间通信。Sy....
分类:
系统相关 时间:
2015-07-01 17:58:47
阅读次数:
146
进程间通信:
1使用管道进行进程间的通信
(1)有名管道
mkfifo xxx.pipe
(2) 无名管道
int pipe(int pipefd[2]);
文件描述符 pipefd[0]代表读端,pipefd[1]代表写端
2. 使用共享内存实现进程间的通信
步骤:
获取key值,使用ftok函数
创建、获取共享内存,使用shmget函数
接挂共享内存,使用shma...
分类:
其他好文 时间:
2015-06-17 15:29:55
阅读次数:
133
1. 前言
本篇文章的所有例子,基于RHEL6.5平台。本篇只介绍管道(匿名管道/普通管道),命名管道在后续文章中会介绍。
2.管道特性
管道是Linux支持的最初Unix IPC形式之一,具有以下特点:
--管道是半双工的,数据只能向一个方向流动,一端输入,另一端输出。需要双方通信时,需要建立起两个管道。
--管道分为普通管道和命名管道。普通管道位于内存,只能用...
分类:
系统相关 时间:
2015-06-17 01:52:27
阅读次数:
258
无名管道,由于没有名字,只能用于亲缘关系的进程间通信(更多详情,请看《无名管道》)。为了克服这个缺点,提出了命名管道(FIFO),也叫有名管道、FIFO 文件。
命名管道(FIFO)不同于无名管道之处在于它提供了一个路径名与之关联,以 FIFO 的文件形式存在于文件系统中,这样,即使与 FIFO 的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过 FIFO 相互通信,因此,通过 FIFO 不相关的进程也能交换数据。...
分类:
系统相关 时间:
2015-06-02 18:05:21
阅读次数:
125
管道也叫无名管道,它是是 UNIX 系统 IPC(进程间通信) 的最古老形式,所有的 UNIX 系统都支持这种通信机制。
每个管道只有一个页面作为缓冲区,该页面是按照环形缓冲区的方式来使用的。这种访问方式是典型的“生产者——消费者”模型。当“生产者”进程有大量的数据需要写时,而且每当写满一个页面就需要进行睡眠等待,等待“消费者”从管道中读走一些数据,为其腾出一些空间。相应的,如果管道中没有可读数据,“消费者” 进程就要睡眠等待。...
分类:
系统相关 时间:
2015-06-02 13:29:43
阅读次数:
191
#include#include#include#include#include#include #include using namespace std;int main(){ //创建共享内存 长度是1024 权限为666 int shmid = shmget(IPC_PRIVATE,1024,...
分类:
系统相关 时间:
2015-05-26 20:34:53
阅读次数:
194
有名管道:无名管道的一个扩展,无名管道是程序运行时存在,有名管道是持久的,一旦创建,所有权限进程都可以访问。 有名管道是单向通道,只能以只读或者只写方式打开。如果要实现双向通信,必须打开两个管道。 有名管道创建:os.mkfifo(path),读写和操作文件一样,open(‘path’, ‘w’),...
分类:
系统相关 时间:
2015-05-22 22:27:55
阅读次数:
305
管道:是一种半双工的通信机制,它一端用来读,另外一端用来写;管道只能用来在具有公共祖先的两个进程之间通信(父进程和子进程或者同一父进程的两个子进程);管道通信消息遵循先进先出的原理,并且数据只能被读取一次,当此段数据被读取后就会清空。管道实质是内存页(page)。 相关函数:os.pipe();它返...
分类:
系统相关 时间:
2015-05-22 16:55:46
阅读次数:
167
用于进程间通信的有5种常用方式:管道、FIFO、消息队列、信号量、共享存储等。
管道 (亦被称为无名管道,以区分FIFO:有名管道)顾名思义具有两个对外端口,一个称为读端,一个称为写端。一个进程在管道的写端写数据,另一个进程从管道的读端
读出数据。如下图所示:
管道仅局限于父进程与子进程之间的通信。
管道通信的特点:
1.管道通讯是单向的,有固定的读端和写端。
2. 数据被进程...
分类:
其他好文 时间:
2015-05-20 13:20:23
阅读次数:
156
linux应用开发-无名管道编程
一 linux进程间通信(ipc)
1 UNIX进程间通信
2 基于System V的通信
3 POSIX通信
二 七种通信方式
1 管道
一个进程在管道的尾部写入数据,另一个进程从管道的头部
读出数据。管道包括无名管道和有名管道两种,前者只能用
于父进程和子进程间的通信,后者可用于运行于同一系统中
的任意两个进程间的通信。
...
分类:
系统相关 时间:
2015-05-01 13:24:32
阅读次数:
205