Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当进程通过msgrcv读取IPC消息时会发生什么情况?_C++_C_Linux - Fatal编程技术网

C++ 当进程通过msgrcv读取IPC消息时会发生什么情况?

C++ 当进程通过msgrcv读取IPC消息时会发生什么情况?,c++,c,linux,C++,C,Linux,当进程使用msgrcv读取IPC消息时会发生什么情况 为什么我不能多次阅读具有相同mtype的邮件 所用结构的代码: struct msgbuff{ long mtype; char mtext[150]; }; 消息只能读取一次。以下是msgrcv手册页描述其功能的方式: msgrcv()系统调用从msqid指定的队列中删除消息,并将其放置在msgp指向的缓冲区中 没有办法偷看队列。如果需要,可以使用msgrcv()从队列中弹出一个项目,然后使用msgsnd()再次添加

当进程使用
msgrcv
读取IPC消息时会发生什么情况

为什么我不能多次阅读具有相同
mtype
的邮件

所用结构的代码:

struct msgbuff{
    long mtype;
    char mtext[150];   
};

消息只能读取一次。以下是msgrcv手册页描述其功能的方式:

msgrcv()系统调用从msqid指定的队列中删除消息,并将其放置在msgp指向的缓冲区中


没有办法偷看队列。如果需要,可以使用msgrcv()从队列中弹出一个项目,然后使用msgsnd()再次添加它。有失败的风险(队列已满、内存不足等),因此它不是万无一失的。

您是否尝试再次读取相同的消息?还是第二条具有相同mtype的消息?我正在尝试第二次阅读相同的消息。它们在被阅读后被销毁了吗?嗯,谢谢你,维克特·阿克曼和萨蒂什。我可以用相同的mtype发送第二条消息吗?当然,类型的使用频率没有限制。该类型仅用于允许您选择要接收的邮件。