问题:
msgsnd: Invalid argument
解决方案:
-
linux系统下使用man msgsnd命令查看该函数,要求如下:
The msgp argument is a pointer to caller-defined structure of the fol‐
lowing general form:struct msgbuf { long mtype; /* message type, must be > 0 */ char mtext[1]; /* message data */ };
The mtext field is an array (or other structure) whose size is speci‐
fied by msgsz, a nonnegative integer value. Messages of zero length
(i.e., no mtext field) are permitted. The mtype field must have a
strictly positive integer value. This value can be used by the receiv‐
ing process for message selection (see the description of msgrcv()
below)./* message type, must be > 0 */对于消息队列结构体中的消息类型的参数的值一定是要大于0,这里的0表示是任意类型的消息,只有recv端才可以设置为0表示:可以接受任意类型消息。
-
注意msgrcv里面的length不能比你用msgsnd传进来的长度要短,否则就会报第二个错误:msgrcv: No message of desired type