Я хочу знать, пустое сообщение в очереди или нет. Я использовал msg_ctl(), так как он не работает:
struct msqid_ds buf;
int num_messages;
rc = msgctl(msqid, IPC_STAT, &buf);
и я использовал эту функцию peek:
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);
}
в обоих случаях я получаю тот же результат до и после отправки сообщения в очередь.
сообщение попадает в очередь успешно, я протестировал это, прочитав то, что я отправил.