前面我们讲了进程间通信的一种方式,匿名管道。我们知道,匿名管道只能用于父子关系的进程之间。那么没有这种关系的进程之间该如何进行数据传递呢? 1.什么是命名管道 匿名管道是在缓存中开辟的输出和输入文件流的空间,只能用于父子关系的进程之间。因为父子进程的输入和输出文件描述符是一致的。命名管道是一种实际存 ...
分类:
系统相关 时间:
2016-06-27 19:25:30
阅读次数:
223
前面我们讲了进程间通信的一种方式,共享内存。下面看一看另一种机制,匿名管道。1.什么是管道管道是一个进程的数据流到另一个进程的通道,即一个进程的数据输出作为另一个进程的数据输入,管道起到了桥梁的作用。比如,在shell中输入命令:ls -l|grep string,ls和grep是两个进程,"|"符 ...
分类:
系统相关 时间:
2016-06-27 17:24:59
阅读次数:
327
sockpair实现进程间通信我们以前学习的利用管道(此处为匿名管道)实现进程间通信,只能是单向的,一边只能读而另一边只能写,且只能在有血缘关系的进程间才能通信,若想实现双向通信就必须创建双向管道,而sockpair它的实现就是双向管道进行通信。它可以用来创建双向通信管道1..
分类:
系统相关 时间:
2016-05-25 11:24:18
阅读次数:
455
1、进程间通信方式 (1)windows进程间通信方式 1、文件映射; 2、共享内存(是文件映射的一种特殊情况); 3、邮件槽(mailslot)(点对点消息队列); 4、匿名管道; 5、命名管道; 6、剪贴板; 7、动态数据交换; 8、对象链接与嵌入; 9、远程过程调用; 10、动态链接库; 11 ...
分类:
系统相关 时间:
2016-05-23 22:29:46
阅读次数:
277
在前一篇文章中,我们看到了如何使用匿名管道来在进程之间传递数据,这个方式有一个缺陷,就是这些进程必须由一个共同的祖先进程启动,这在不相关的的进程之间交换数据带来了不便。而另一种通信方式——命名管道,可以解决不相关进程间的通信问题。 1.什么是命名管道?命名管道也被称为FIFO文件,它是一种特殊类型的 ...
分类:
系统相关 时间:
2016-05-14 17:01:34
阅读次数:
341
Linux IPC 常见的方式写 Linux Server 端程序,必然会涉及到进程间通信 IPC. 通信必然伴随着同步机制,下面是一些常见的通信与同步机制:
进程间通信:匿名管道,命名管道,消息队列,共享内存,Domain Socket, 本机 TCP Socket,文件
进程间同步:信号,信号量
线程间同步:条件变量,互斥量,读写锁,自旋锁,Barrier.
对于大部分的业务场景,本机 TCP...
分类:
系统相关 时间:
2016-05-12 23:26:34
阅读次数:
283
管道由pipe函数创建#include<unistd.h>intpipe(intfiledes[2]);调用pipe函数在内核中开辟一块缓冲区(就是管道)用于通信,filedes[0]指向管道的读端,filedes[1]指向管道的写端。pipe函数调用成功返回0,调用失败返回-1。比如,父进程关闭读端,子进程关闭写端。代码如..
分类:
系统相关 时间:
2016-04-17 23:29:52
阅读次数:
513
1、管道(pipe)特点a>.通过pipe建立通信管道,fork创建子进程(传递文件描述符),且这种关系只能由父进程建立,局限于有血缘关系的进程间的通讯;b>.管道是文件,并且只存于内存中,当进程终结时,管道也消失;c>.管道只能是单向通信,一端输入,另一端输出;d>...
分类:
其他好文 时间:
2016-04-13 00:42:42
阅读次数:
170
管道内部如何实现-大小,组织方式,环形队列?一.进程间通信有多种方式,本文主要讲解对管道的理解。管道分为匿名管道和命名管道。(1)管道(pipe):又称匿名管道。是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子..
分类:
系统相关 时间:
2016-04-12 07:45:20
阅读次数:
262
在上一篇说的管道为匿名管道(pipe),本篇是另一种进程间通信方式,命名管道(fifo)匿名管道的生命周期随进程命名管道的生命周期随系统匿名管道不能在没有血缘关系的进程(如父子,兄弟进程)间进行通信,而命名管道解决了这一问题它是可以在任何进程间进行通信的一种特殊文件..
分类:
系统相关 时间:
2016-04-11 07:37:55
阅读次数:
289