管道:
1. 管道是Unix系统最古老的进程间通信方式,其实质是一个虚拟文件,是在内核中维护了一个消息队列。
2. 历史上的管道通常是指半双工管道,只允许数据单向流动。现代系统大都提供全双工管道,数据可以沿着管道双向流动。
有名管道(fifo):
1. 概念:基于有名文件(管道文件)的管道通信
2. 命令形式:
# mkfifo fifo 创建管道
...
分类:
其他好文 时间:
2015-07-28 13:07:57
阅读次数:
166
一:
A,B两个进程通过管道通信,像以前的互相聊天一样,然后A进程每次接收到的数据通过A1进程显示(一个新进程,用于显示A接收到的信息),A和A1间的数据传递采用共享内存,对应的有一个B1进程,用于显示B进程接收到的信息。针对A,B进程,退出时采用ctrl+c退出,当收到对应信号后,自身进程能够通过信号处理函数进行资源清理,清理后exit退出进程。(A1,B1,手动关闭即可)。界面图如下...
分类:
系统相关 时间:
2015-07-20 10:52:03
阅读次数:
215
1. 前言
本篇文章的所有例子,基于RHEL6.5平台。前一篇文章介绍了匿名管道。点此链接。
2.介绍
管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只...
分类:
系统相关 时间:
2015-06-17 01:52:59
阅读次数:
253
1. 前言
本篇文章的所有例子,基于RHEL6.5平台。本篇只介绍管道(匿名管道/普通管道),命名管道在后续文章中会介绍。
2.管道特性
管道是Linux支持的最初Unix IPC形式之一,具有以下特点:
--管道是半双工的,数据只能向一个方向流动,一端输入,另一端输出。需要双方通信时,需要建立起两个管道。
--管道分为普通管道和命名管道。普通管道位于内存,只能用...
分类:
系统相关 时间:
2015-06-17 01:52:27
阅读次数:
258
下面举linux下有名管道通信的代码。-----------------------------------------fifo_read.c===========#include#include#include#include#include#include#define FIFO "myfif....
分类:
系统相关 时间:
2015-06-12 17:03:05
阅读次数:
237
管道通信属于进程间通信的一种方式,使用方便,但是局限是父进程与子进程间的通信,下面是调试好的代码。程序父进程创建2个管道,分别用于父进程写数据--子进程读数据和子进程写数据--父进程读数据:#include #include #include #include int main(int argc,c...
分类:
系统相关 时间:
2015-06-02 11:07:29
阅读次数:
123
管道:是一种半双工的通信机制,它一端用来读,另外一端用来写;管道只能用来在具有公共祖先的两个进程之间通信(父进程和子进程或者同一父进程的两个子进程);管道通信消息遵循先进先出的原理,并且数据只能被读取一次,当此段数据被读取后就会清空。管道实质是内存页(page)。 相关函数:os.pipe();它返...
分类:
系统相关 时间:
2015-05-22 16:55:46
阅读次数:
167
用于进程间通信的有5种常用方式:管道、FIFO、消息队列、信号量、共享存储等。
管道 (亦被称为无名管道,以区分FIFO:有名管道)顾名思义具有两个对外端口,一个称为读端,一个称为写端。一个进程在管道的写端写数据,另一个进程从管道的读端
读出数据。如下图所示:
管道仅局限于父进程与子进程之间的通信。
管道通信的特点:
1.管道通讯是单向的,有固定的读端和写端。
2. 数据被进程...
分类:
其他好文 时间:
2015-05-20 13:20:23
阅读次数:
156
目前有一个查询程序 get_user_id 是用C写的,python需要调用这个程序:使用 get_user_id "用户名" 可以得到输出: "ID0002451". 在python中使用管道可以方便的调用这个进程并得到它的标准输出:get_user_id 是C写的,程序大概的框架如下:得到一个命...
分类:
编程语言 时间:
2015-04-28 08:16:00
阅读次数:
164
匿名管道管道是一个单向通道,有点类似共享内存缓存.管道有两端,包括输入端和输出端.对于一个进程的而言,它只能看到管道一端,即要么是输入端要么是输出端.os.pipe()返回2个文件描述符(r, w),表示可读的和可写的.示例代码如下:#!/usr/bin/python
import time
import osdef child(wpipe):
print('hello from child...
分类:
编程语言 时间:
2015-04-09 12:02:47
阅读次数:
191