10
キューメッセージが空であるかどうかを知りたいです。私は前と送信後に同じ結果を得る両方のケースでLinux:メッセージキューが空であることを確認してください。
int peek_message(int qid, long type)
{
int result, length;
if((result = msgrcv(qid, NULL, 0, type, IPC_NOWAIT)) == -1) {
if(errno==E2BIG)
return(1);
}
return(0);
}
:
struct msqid_ds buf;
int num_messages;
rc = msgctl(msqid, IPC_STAT, &buf);
と私は、このPEEK機能を使用しました:私はそれが動作しない、次のようにmsg_ctlを()を使用していますメッセージをキューに送ります。
メッセージが正常にキューに到着すると、私は送信したものを読み取ってテストしました。
"動作しません" - それは何をするためのものか?エラーメッセージが表示されますか?予期しない値を返しますか?どちらの価値? – sehe
私は、0のメッセージの数を得ることを意味します –
そして、最初のインスタンスではbuf.msg_qnumをチェックしていますか?原因不明の「int num_messages」もあるため、これは明確ではありません。 – Duck