(2)Posix IPC

概述

Posix IPC含有以下三种类型的IPC:

  • Posix消息队列(mqueue)
  • Posix信号量(semaphore)
  • Posix共享内存区(mman)

Posix IPC具有的共同属性:用于标识的路径名、打开或创建时指定的标志及访问权限。

消息队列信号量共享内存区
头文件<mqueue.h><semaphore.h><sys/mman.h>
创建、打开或删除IPC的函数mq_open
mq_close
mq_unlink
sem_open
sem_close
sem_unlink
sem_init
sem_destroy
shm_open
shm_unlink
控制IPC操作的函数mq_getattr
mq_setattr
ftruncate
fstat
IPC操作函数mq_send
mq_receive
mq_notify
sem_wait
sem_trywait
sem_post
sem_getvalue
mmap
munmap

IPC名字

在使用Posix IPC接口创建IPC时,mq_open、sem_open和shm_open的第一个参数用于指定创建的IPC名字。
Posix标准规定IPC的名字必须以一个斜杠符开始,并且不能再包含有任何其他斜杠符
IPC的名字规定不同系统中有不同的实现,在使用时需要考虑可移植性问题。

创建与打开IPC通道

mq_open、sem_open和shm_open用于创建或打开一个IPC对象的函数。这三个函数的第二个参数指定怎么样打开所请求的对象。与open函数的第二个参数类型。

说明mq_opensem_openshm_open
只读
只写
读写
O_RDONLY
O_WRONLY
O_RDWR
O_RDONLY

O_RDWR
若不存在则创建
排他性创建
O_CREAT
O_EXCL
O_CREAT
O_EXCL
O_CREAT
O_EXCL
非阻塞模式
若已存在则截短
O_NONBLOCK





O_TRUNC

前三行指定怎样打开对象:只读、只写或读写。消息队列mq能以其中任何一种模式打开,信号量的打开不能指定任何模式(任意信号量操作,都需要读写访问权),共享内存对象则不能以只写模式打开。

IPC权限

(略)

小结

三种类型的Posix IPC ----- 消息队列、信号量、共享内存区--------都是用路径名进行标识。路径名既可以是文件系统中实际的路径名,也可以不是,这一点需要在使用时注意可移植性问题。
当创建或打开一个IPC对象时,需要指定创建或打开IPC对象的方式(open函数所用的标志),创建一个新的IPC对象时,必须给对象指定访问权限(open函数使用的S_xxx常值)。打开一个已存在的IPC对象时,所执行的权限测试与打开一个已存在的文件时一样。

参考资料

《UNIX网络编程-卷2-进程间通信》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值