Posix消息队列的基本操作——创建或打开

本文提供了一个使用C语言创建消息队列的示例程序,通过命令行参数配置队列的最大消息数量和单条消息的最大长度。该程序展示了如何利用POSIX消息队列API进行消息队列的创建与关闭。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>           /* For O_* constants */
#include <sys/stat.h>        /* For mode constants */
#include <mqueue.h>

#define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)

struct mq_attr attr;

int main(int argc, char**argv)
{
    int c, flags;
    mqd_t   mqd;

    flags = O_RDWR | O_CREAT;

    while((c = getopt(argc, argv,"em:z:")) != -1)
    {
        switch(c)
        {
            case 'e':
                flags |= O_EXCL;
                break;

            case 'm':
                attr.mq_maxmsg = atol(optarg);
                break;

            case 'z':
                attr.mq_msgsize = atol(optarg);
                break;
        }
    }
    
    if(optind != argc - 1)
    {
        printf("usage: mqcreate [-e] [ -m maxmsg -z msgsize] <name>");
    }
    
    if((attr.mq_maxmsg != 0 && attr.mq_msgsize == 0) || (attr.mq_maxmsg == 0 && attr.mq_msgsize != 0))
    {
        printf("must specify both -m maxmsg and -z msgsie\n");
    }
    mqd = mq_open(argv[optind],flags,FILE_MODE,(attr.mq_maxmsg != 0) ? &attr : NULL);
    
    mq_close(mqd);

    exit(0);
}


编译的时候注意加参数  -lrt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值