文档章节

2. Posix IPC

alon龙武
 alon龙武
发布于 2014/11/17 21:56
字数 521
阅读 122
收藏 0

Posix IPC包含三种类型的IPCPosix消息队列、Posix信号量和Posix共享内存区

 

Posix IPC名字

  • 必须符合已有的路径名规则(必须最多PATH_MAX字节构成,包含结尾的空字节)

  • 如果以斜杠符开头,函数的不同调用将访问同一个队列。如果不以斜杠符开头,效果取决于实现

  • 名字中额外斜杠符的解释由实现定义

为了移植,Posix IPC名字必须以一个斜杠符开头,并且不能含有任何其他斜杠符。为了避免移植性问题,应该把Posix IPC名字的#define行放在一个便于修改的头文件。解决上述移植性问题的另一个办法是定义一个px_ipc_name函数,为定位Posix IPC名字添加正确的前缀目录

char *px_ipc_name(const char *name);  # name参数不能有任何斜杠符,Solaris返回/nameUnix返回/tmp/name

 

创建与打开IPC对象

mq_opensem_openshm_open三个创建或打开一个IPC对象的函数,oflag参数指定怎样打开请求的对象创建一个新的消息队列、信号量或共享内存区对象时,至少需要mode参数,指定权限位。三个函数打开一个存在的消息队列、信号量或共享内存区对象时,需要基于如下信息执行权限测试:创建时赋予IPC对象的权限位;请求访问类型O_RDONLYO_WRONLYO_RDWR;调用进程的有效ID、有效组ID及各个辅助组ID

     打开或创建Posix IPC对象所用的各种oflag常值

创建新的IPC对象所用的mode常值

 

O_EXCL:如果该标志和O_CREAT一起指定,那么IPC函数只在所指定名字的消息队列、信号量或共享内存区对象不存在时才创建新的对象。如果对象已经存在,那么返回一个EEXIST错误

                打开一个IPC对象的真正逻辑流程

© 著作权归作者所有

共有 人打赏支持
alon龙武
粉丝 2
博文 14
码字总数 20481
作品 0
深圳
程序员
Linux IPC总结

我看网络上System V IPC 与POSIX IPC总是混在一起搞不清,今天总结一下. System V IPC API 1,消息队列 int ftok(const char *pathname, int prj_id); int msgget(key_t key,int msgflag); int......

jlmpp
2010/11/16
770
0
深刻理解Linux进程间通信(IPC)

linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实 验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信...

墙头草
2010/11/19
0
0
第15章 进程间通行 15.6 XSI IPC 15.7 消息队列

15.6 XSI IPC (1)3种称作XSI IPC的IPC是: 1)消息队列 2)信号量 3)共享存储器 (2)标识符和键 1)标识符:是一个非负整数,用于引用IPC结构。是IPC对象的内部名。 2)键:IPC对象的外部...

fxdhdu
2015/10/23
79
0
linux共享内存的设计

posix的共享内存是通过用户空间挂在的tmpfs文件系统实现的,而system V的共享内存是由内核本身的tmpfs实现的,这里可以看出,二者其实是用同一种机制实现的,不同的是用户接口不同,posix旨在...

晨曦之光
2012/04/10
1K
0
No space left on device: Couldn't create accept lock

原因: (1) 确认是否是硬盘空间不足;结果发现不是空间的问题; (2) 网上查看了下,发现是ipc不足。可以使用ipcs -s(|grep apache的group) 处理: (1) 可以使用$ ipcrm -s 清理指定 semaph...

极速前行
2016/05/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

VS code编辑器安装 php7.2 NTS 版本 Xdebug

本文使用的是 phpstudy 一键安装包(windows32位) php 版本是 php7.2 NTS 1、在 phpstudy 面板中开启 phpdebug 扩展 // 其他选项菜单-> php 扩展与设置-> php 扩展 2、官方下载 Xdebug // ...

削个椰子皮_给个梨
30分钟前
1
0
Swagger中配置了@ApiModelProperty的allowableValues属性但不显示的问题

现在用Swagger来生成API文档的例子已经非常多了,今天碰到开发同事问了一个问题,帮着看了一下,主要还是配置方法的问题,所以记录一下。如果您也碰到了同样的问题,希望本文对您有用。 问题...

程序猿DD
今天
3
0
sql 命令

show variables like '%general%'; show variables like '%log_output%'; show variables like '%quer%'; show global status like '%slow%';...

JavaSon712
今天
4
0
Django修改默认数据库引擎

Django默认数据库引擎为sqlite3,除了sqlite3,还支持postgresql、mysql、oracle 配置如下:其中postgresql_psycopg2为postgresql的适配器。 'django.db.backends.postgresql' 'django.db.bac......

MichaelShu
今天
0
0
动画源码解析

目录介绍 1.Animation和Animator区别 2.Animation运行原理和源码分析 2.1 基本属性介绍 2.2 如何计算动画数据 2.3 什么是动画更新函数 2.4 动画数据如何存储 2.5 Animation的调用 3.Animator...

潇湘剑雨
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部