Key_t key; int msgid; key = ftok(“./1.fifo”,2); msgid = msgget(key|me.....); MSG msg; msg.mtext[64]=”update message to the quene!\r\n” msgsnt(msgid,msg.mtext,64,0);这样上传消息到消息队列 对嘛
时间: 2024-02-24 11:55:48 浏览: 90
这段代码是错误的。首先,ftok() 函数的第一个参数应该是一个存在的文件路径,而不是一个管道文件的路径。其次,msgget() 函数的第二个参数需要指定消息队列的权限,而不是使用位运算符将 key 和权限合并。最后,该代码没有将 msg.mtype 字段设置为消息类型,这将导致接收者无法正确地接收消息。
正确的代码应该类似于这样:
```
key_t key;
int msgid;
key = ftok("./existing_file_path", 'A');
msgid = msgget(key, 0666 | IPC_CREAT);
MSG msg;
msg.mtype = 1;
strcpy(msg.mtext, "update message to the queue!\r\n");
msgsnd(msgid, &msg, strlen(msg.mtext) + 1, 0);
```
其中,'A' 是一个任意的标识符,0666 表示消息队列的权限设置为读写权限,IPC_CREAT 表示如果消息队列不存在则创建它。msg.mtype 设置为 1 表示消息类型为 1,msgsnd() 函数将消息发送到消息队列。
阅读全文