System V 消息队列:深入解析与应用案例
1. 仅通过标识符从 System V 消息队列读取数据
在操作 System V 消息队列时,有时我们仅知道队列的标识符,却需要从中读取数据。以下是一个示例代码( svrnsg/rnsgrcvid.c ):
#include "unpipc.h"
#define MAXMSG (8192 + sizeof(long))
int
main(int argc, char **argv)
{
int mqid;
ssize_t n;
struct msgbuf *buff;
if (argc != 2)
err_quit("usage: msgrcvid <mqid>");
mqid = atoi(argv[1]);
buff = Malloc(MAXMSG);
n = Msgrcv(mqid, buff, MAXMSG, 0, 0);
printf("read %d bytes, type = %ld\n", n, buff->mtype);
exit(0);
}
操作步骤如下:
1. 编译代码:将上述代码保存为 rnsgrcvid.c ,使用 gcc rnsgrcvid.c -o rnsgrcvid 进行编译。
2. 创建消息队列:使用 rnsgcreate 工具创建消息队列,例如 rnsgcreate /t
超级会员免费看
订阅专栏 解锁全文
84万+

被折叠的 条评论
为什么被折叠?



