管道概念 管道是Unix中最古老的进程间通信的形式,我们把从一个进程连接到另一个进程的一个数据流称为一个“管道”, 管道的本质是固定大小的内核缓冲区; 如:ps aux | grep httpd | awk '{print $2}' 管道限制 1)管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 2)匿名管道只能用于具有共同祖先的进程(如父进程与fork...
分类:
系统相关 时间:
2015-02-18 17:41:21
阅读次数:
365
这应该可以算得上是IPC的一种,虽然效率可能并没有其它IPC方式高.
看到map很容易联想到映射.的确,mmap就是一种映射方式,将打开的文件和一段连续的内存做映射.使得对内存进行操作即可以实现对文件的读写,反过来,也就是说,可以通过这种方式来达到进程通信.
mmap系列涉及三个函数.
void * mmap(void *buf, size_t len, int prot, int flag...
分类:
系统相关 时间:
2015-01-03 23:59:28
阅读次数:
489
程序msg1.c用于接收消息
#include
#include
#include
#include
#include
#include
struct my_msg_st {
long int my_msg_type;
char some_text[BUFSIZ];
};
int main()
{
int running = 1;
int msg...
分类:
系统相关 时间:
2015-01-03 17:23:46
阅读次数:
262
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途】
这个系列基本上到现在为止已经差不多把linux上的各种常用的IPC介绍完了,linux上面的IPC大多都是从UNIX上面继承而来。
最初Unix IPC包括:管道、FIFO、信号。System ...
分类:
系统相关 时间:
2014-12-09 19:47:35
阅读次数:
382
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途】
system V消息队列和posix消息队列类似,linux系统这两种消息队列都支持。先来看一下system V消息队列相关操作及其函数。
msgget()函数创建一个消息队列或打开一个消息队列。
...
分类:
系统相关 时间:
2014-12-08 19:40:20
阅读次数:
317
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet 或 .../gentleliu,文章仅供学习交流,请勿用于商业用途】
消息队列可以看作一系列消息组织成的链表,一个程序可以往这个链表添加消息,另外的程序可以从这个消息链表读走消息。
mq_open()函数打开或创建一个posix消息队列。
#inclu...
分类:
系统相关 时间:
2014-12-05 17:27:43
阅读次数:
360
信号量API综合实践//实践1:封装PV原语
union mySemUn
{
int val; // Value for SETVAL//
struct semid_ds *buf; // Buffer for IPC_STAT, IPC_SET//
unsigned short *array; // Array for GETAL...
分类:
系统相关 时间:
2014-11-30 12:34:17
阅读次数:
153
进程的同步与互斥 顺序程序与并发程序特征顺序程序并发程序顺序性共享性封闭性:(运行环境的封闭性)并发性确定性随机性可再现性 进程互斥 由于各进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程的这种关系为进程的互斥. 系统中某些资源一次只允许一个进程使用,称这样的资源为临界资源或互斥资源。 在进程中涉及到互斥资源的程序段叫临界区. 互斥示例说...
分类:
系统相关 时间:
2014-11-30 12:33:11
阅读次数:
272
消息队列基本概念 消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法(仅局限与本机) 每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值 消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI) 管道 vs. 消息队列:管道: ...
分类:
系统相关 时间:
2014-11-29 11:59:12
阅读次数:
279
消息队列函数 #include
#include
#include
int msgget(key_t key, int msgflg);
int msgctl(int msqid, int cmd, struct msqid_ds *buf);
int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);...
分类:
系统相关 时间:
2014-11-29 11:58:26
阅读次数:
302