我在linux上創建消息隊列時遇到問題。我收到的錯誤是「無效的參數」。我需要的另一件事是代碼是Qt項目的一部分。POSIX消息隊列 - 打開時出錯:無效參數
常見的錯誤是名稱不以(/)開頭,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的最後一個參數(隊列屬性)更改爲NULL並且它工作時。但我不知道msg大小和隊列最大長度的默認值。 – DimDqkov