2. Posix IPC
2. Posix IPC
alon龙武 发表于3年前
2. Posix IPC
  • 发表于 3年前
  • 阅读 118
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: Unix网络编程卷2:Posix IPC

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对象的真正逻辑流程

标签: Unix编程
共有 人打赏支持
粉丝 3
博文 14
码字总数 20481
×
alon龙武
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: