摘要:
不同进程处于不同用户地址空间,相互相对独立,进程间实现通信需要通过内核缓冲区,通过这个区域实现不同进程间数据的写入与读取,称之为IPC,InterProcess Communication。以下内容皆基于Linux / Unix系统。其实现机制有管道(Pipe)、共享内存(Shared Memory),消息队列(Message Queue)等,目前最为常用的为UNIX Domain Socket。UNIX Domain Socket类似于网络通信中的Socket API,不过无需网络协议、打包拆包等,更有效率。其结构体使用sockaddr_un,地址为文件系统中建立的一个socket类型的文件 阅读全文
摘要:
原文出自:http://home.lupaworld.com/space-uid-296848.html 1、管道(pipe)管道是进程间通信的主要手段之一。一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进行,它们分别代表管道的两端。管道是一种特殊的文件,它不属于某一种文件系统,而是一种独立的文件系统,有其自己的数据结构。根据管道的适用范围将其分为:无名管道和命名管道。●无名管道主要用于父进程与子进程之间,或者两个兄弟进程之间。在linux系统中可以通过系统调用建立起一个单向的通信管道,且这种关系只能由父进程来建立。因此,每个管道都是单向的,当需要双向通信时就 阅读全文
摘要:
Linux下进程之间通信可以用命名管道FIFO完成。命名管道是一种特殊类型的文件,因为Linux中所有事物都是文件,它在文件系统中以文件名的形式存在。在程序中,我们可以使用两个不同的函数调用来建立管道:#include <sys/types.h>#include <sys/stat.h>int mkfifo(const char *filename, mode_t mode);int mknode(const char *filename, mode_t mode | S_IFIFO, (dev_t) 0 );下面先来创建一个管道:[cpp]view plaincopy 阅读全文