C 中的消息:权限被拒绝

Msgsnd in c: permission denied

我正在尝试创建消息队列,然后向其发送消息。这是我尝试过的:

int main(){
    int myMsgQueue;
    struct msgStruct{
        long mtype;
        char mtext[LENGTH];
    };
    struct msgStruct myMsg; 
    myMsg.mtype = (long)getpid();
    strcpy(myMsg.mtext,"Hey there"); //Setting the string of the message

    if((myMsgQueue = msgget(IPC_PRIVATE,IPC_CREAT | IPC_EXCL)) == -1) //Creating the message queue
        errore(__LINE__);
    if(msgsnd(myMsgQueue,&myMsg,sizeof(myMsg) - sizeof(long),0) == -1) //Sending the message
        errore(__LINE__);
    if(msgctl(myMsgQueue,IPC_RMID,0) == -1) //Deleting the message queue
        errore(__LINE__);
}

函数 errore 使用 strerror(errno) 简单地打印出解释错误的字符串。
但是,该代码似乎不起作用:errore 将 "Permission denied" 打印为 msgsnd returns -1.
我无法弄清楚问题是什么:我正在初始化消息队列和足够的消息结构,然后创建一条消息,其类型对应于进程的 pid 和文本对应于 "Hey there",然后发送消息.
我错过了什么?

阅读手册页man page

A message queue identifier exists for the argument key, but operation permission as specified by the low-order 9 bits of msgflg would not be granted;