API综合使用//父进程发送消息,子进程接收消息
struct msgBuf
{
long mtype; /* message type, must be > 0 */
char mtext[104]; /* message data */
};
const int MSGNUMBER = 10;
int main()
{
//获取一个键
key...
分类:
系统相关 时间:
2014-11-29 11:57:20
阅读次数:
295
共享内存基本概念 共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据(如图)。 共享内存 VS. 其他IPC形式 用管道/消息队列传递数据 用共享内存传递数据 (内核为每个IPC对象维护一个数据结构) 共享内存生成之后,传递数据并不需要再走Linux...
分类:
系统相关 时间:
2014-11-27 16:17:24
阅读次数:
313
消息队列基本概念 消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法(仅局限与本机) 每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值 消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI) 管道 vs. 消息队列:管道: ...
分类:
系统相关 时间:
2014-11-27 08:03:21
阅读次数:
366
Linux IPC的发展 Linux下的进程通信手段基本上是从UNIX平台上的进程通信手段继承而来的。而对UNIX发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间的通信方面的侧重点有所不同。前者是对UNIX早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,其通信进程主要局限在单个计算机内;而BSD则跳过了该...
分类:
系统相关 时间:
2014-11-26 19:07:30
阅读次数:
197
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途】
上一节的说了使用kill函数来发送信号和使用signal函数来安装信号处理函数,这一节我们使用另外一种方式来实现安装信号处理和发送信号。
早期UNIX只支持SIGRTMIN之前的不可靠信号,后来增加了SIGR...
分类:
系统相关 时间:
2014-11-24 22:38:56
阅读次数:
331
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途】
信号类似于中断请求,一个进程不会阻塞在某处等待信号的到来,也不会知道信号何时能到来,信号的产生是随机的,进程只需要注册信号处理函数,在信号到来时执行信号处理函数即可。
linux系统支持的信号可以通过命令kill -l来查看:...
分类:
系统相关 时间:
2014-11-24 20:53:36
阅读次数:
293
上一节讲了由open函数打开一个内存映射文件,再由mmap函数把得到的描述符映射到当前进程地址空间中来。这一节说说另外一种类似的共享内存方法,即 有shm_open函数打开一个Posix.1 IPC名字(也许是文件系统中的一个路径名),所返回的描述符由函数mmap映射到当前进程地址空间。 pos.....
分类:
系统相关 时间:
2014-11-22 21:33:46
阅读次数:
299
system V共享内存和posix共享内存类似,system V共享内存是调用shmget函数和shamat函数。 shmget函数创建共享内存区,或者访问一个存在的内存区,类似系统调用共享内存的open和posix共享内存shm_open函数。shmget函数原型为:#include#i...
分类:
系统相关 时间:
2014-11-22 21:31:52
阅读次数:
241
在unix系统上最早的IPC形式为管道,管道的创建使用pipe函数:#includeintpipe(intpipefd[2]);该函数创建一个单向的管道,返回两个描述符 pipefd[0],和pipefd[1],pipefd[0]用于读操作,pipefd[1]用于写操作。该函数一般应用在父子进程(有...
分类:
系统相关 时间:
2014-11-22 21:31:38
阅读次数:
296
前面讲到socket的进程间通信方式,这种方式在进程间传递数据时首先需要从进程1地址空间中把数据拷贝到内核,内核再将数据拷贝到进程2的地址空间 中,也就是数据传递需要经过内核传递。这样在处理较多数据时效率不是很高,而让多个进程共享一片内存区则解决了之前socket进程通信的问题。共享内存 是最快的进...
分类:
系统相关 时间:
2014-11-22 21:29:31
阅读次数:
295