共享内存基本概念 共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据(如图)。 共享内存 VS. 其他IPC形式 用管道/消息队列传递数据 用共享内存传递数据 (内核为每个IPC对象维护一个数据结构) 共享内存生成之后,传递数据并不需要再走Linux...
分类:
系统相关 时间:
2014-11-27 16:17:24
阅读次数:
313
shmdt函数功能:将共享内存段与当前进程脱离原型:int shmdt(const void *shmaddr);参数: shmaddr: 由shmat所返回的指针 返回值: 成功返回0;失败返回-1//实践:运行程序,观察ipcs输出
int main()
{
//获取或者打开共享内存
int shmid = shmget(0x15764221, 1024 * siz...
分类:
系统相关 时间:
2014-11-27 16:16:35
阅读次数:
332
一、信号及信号来源信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知...
分类:
系统相关 时间:
2014-11-27 15:52:51
阅读次数:
262
Linux IPC的发展 Linux下的进程通信手段基本上是从UNIX平台上的进程通信手段继承而来的。而对UNIX发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间的通信方面的侧重点有所不同。前者是对UNIX早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,其通信进程主要局限在单个计算机内;而BSD则跳过了该...
分类:
系统相关 时间:
2014-11-26 19:07:30
阅读次数:
197
概述 (匿名)管道应用的一个限制就是只能在具有共同祖先(具有亲缘关系)的进程间通信。 如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道;命名管道是一种特殊类型的文件. 管道应用1)创建一个命名管道命名管道可以从命令行上创建: $ mkfifo 命名管道在程序里创建: #include
#include...
分类:
系统相关 时间:
2014-11-26 06:41:22
阅读次数:
417
管道基本概念 管道是Unix中最古老的进程间通信的形式。 我们把从一个进程连接到另一个进程的一个数据流称为一个“管道” 如:psaux|grephttpd|awk'{print$2}'管道示意图管道的本质 固定大小的内核缓冲区管道限制 1)管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要...
分类:
系统相关 时间:
2014-11-25 15:49:02
阅读次数:
396
管道基本概念 管道是Unix中最古老的进程间通信的形式。 我们把从一个进程连接到另一个进程的一个数据流称为一个“管道” 如:ps aux | grep httpd | awk '{print $2}' 管道示意图管道的本质 固定大小的内核缓冲区管道限制 1)管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 2)匿名管道只能用于具有...
分类:
系统相关 时间:
2014-11-25 08:12:53
阅读次数:
346