转载请保留原文地址http://blog.csdn.net/guodongxiaren/article/details/43876207
概述
System V(“系统五”)系统上发明了三种IPC机制(消息队列、信号量和共享内存),通常称为System V IPC。又因为后来被收录到Unix的XSI标准之中故又称为XSI IPC。所以当你看到System V IPC 和 XSI IPC的时候实际上指的是同一种东西。
C语言是一门面向过程的语言,与OO(面向对象)语言不同,它没有做到数据和操作的封装。因此在编写C语言程序的时候暴露在你面前的是一大堆函数。由于缺少OO的那层抽象,增加了记忆时的复杂度,因此如果你对函数分不清的话,常常会使你在编程的时候焦头烂额。
本文不会详实地介绍各个函数的参数、返回值等等这些细节,这些你在Unix或Linux编程的书中应该都能找到。本文的目的是帮助你打通三种IPC之间关系的任督二脉,从而强化理解,减轻记忆难度。
化简为繁 理解英文
C语言中所有标识符都是用英文字母组成的,这点毋庸置疑。如果我们能善于找到各种缩写的原型,去理解它的英文释义,就能帮助我们记忆。
比如三个IPC的缩写:
缩写 | 全写 | 释义 |
---|---|---|
msg | message (queue) | 消息队列 |
sem | semaphore | 信号量 |
shm | shared memory | 共享内存 |
一马当先 头文件
在使用三种IPC机制的时候,我们肯定是通过系统调用,而这些函数所需要的头文件需要首先搞清楚。System V的IPC操作要用到的头文件有:
#include <sys/types.h> //公共头文件,声明了key_t类型 #include <sys/ipc.h> //公共头文件 #include <<