linuxC多进程通讯---POSIX消息队列

本文介绍了Linux环境下,使用POSIX消息队列进行多进程通信的方法,包括创建、打开、关闭、删除消息队列的API及其使用细节,以及父子进程和两个独立进程间如何通过消息队列进行数据传递。
摘要由CSDN通过智能技术生成

posix与system v对比

•POSIX IPC
•POSIX接口更简单:使用类似于文件I/O的open、close、unlink等接口
•POSIX使用名字代替键来标识IPC对象
•对 IPC 对象引用计数,简化了对 IPC 对象的删除
–跟文件类似,删除操作也仅仅是删除了IPC对象的名字
–只有当IPC对象的引用计数变成0之后才真正销毁IPC对象
•System V IPC
•System V IPC 可移植性更好:几乎所有的UNIX系统都支持system V,POSIX在UNIX系统中只是一个可选组件,有些UNIX系统并不支持
•Linux系统一般都会支持system V
•Linux 2.6开始陆续支持POSIX…

POSIX 编程注意事项

•使用POSIX 消息队列和共享内存时,需要实时库librt链接,编译时需指定 $ -lrt
•使用POSIX 信号量时,需要和线程库libpthread链接起来,编译时需指定$ -lpthread

相关API

•mq_open: 创建或打开一个消息队列
•mq_send: 向消息队列写入一条消息
•mq_receive:从消息队列中读取一条消息
•mq_close: 关闭进程打开的消息队列
•mq_unlink: 删除一个消息队列
•mq_setattr:设置消息队列一些额外的属性
•mq_getattr:获取消息队列一些额外的属性
•mq_nofity: 异步通知

创建或打开 IPC 对象
•函数原型:

–mqd_t mq_open (const char *name, int oflag);
–mqd_t mq_open (const char *name, int oflag, mode_t mode,
struct mq_attr *attr);

•函数功能:

使用指定名字创建或打开一个对象,返回该对象的句柄

•函数参数:

–name:用来标识要创建或打开的对象
–Oflag:O_CREAT/O_EXCL /O_RDONLY /O_WRONLY /O_RDWR /O_NONBLOCK
–Mode:位掩码,权限设置
–Attr:设置消息队列的属性,若为NULL,使用默认属性。Linux3.5以后版本也可通过/proc查看设置

•函数返回值

–成功:返回消息队列的IPC对象描述符
–失败:返回-1,并设置errno

关闭POSIX 消息队列
•函数原型ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值