我在Linux上创建消息队列时遇到麻烦。我收到的错误是“无效参数”。我必须要提到的另一件事是,代码是Qt项目的一部分。

常见的错误是名称不是以(/)开头并且arg的数目不正确,但是我已经检查了这些错误!

这是我要运行的代码:

#define MQ_TEST_PATH            "/test_queue"
#define MQ_MAX_MSG_SIZE         256
#define MQ_MAX_MSG_COUNT        20

struct mq_attr mqAttr;
mqAttr.mq_maxmsg = MQ_MAX_MSG_COUNT;
mqAttr.mq_msgsize = MQ_MAX_MSG_SIZE;

mq_unlink(MQ_TEST_PATH);

mode_t mode =  S_IRUSR | S_IWUSR;
int oflags = O_WRONLY | O_CREAT | O_EXCL;

mqd_t mqd;
mqd = mq_open(MQ_TEST_PATH, oflags, mode, &mqAttr);

if(mqd < 0){
    perror("Error on open");
    qDebug()<<mqd;
    return 0;
}

mq_close(mqd);
mq_unlink(MQ_TEST_PATH);

输出:
Error on open: Invalid argument
-1

最佳答案

人 mq_open



man mq_overview

>
/proc/sys/fs/mqueue/msg_max

关于c - POSIX 消息队列 - 打开 : Invalid argument 时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13929511/

10-08 22:30