Quiero saber si un mensaje de cola está vacío o no. he utilizado msg_ctl() de la siguiente no funciona:Linux: compruebe si la cola de mensajes está vacía
struct msqid_ds buf;
int num_messages;
rc = msgctl(msqid, IPC_STAT, &buf);
y he utilizado esta función vistazo:
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);
}
en ambos casos me sale el mismo resultado antes y después de enviar una mensaje a la cola.
el mensaje llega a la cola con éxito, lo he probado al leer lo que he enviado.
"no funciona"? - ¿Qué hace? ¿Recibes un mensaje de error? ¿Devuelve un valor inesperado? ¿Qué valor? – sehe
quiero decir, obtengo un recuento de 0 mensajes –
y en la primera instancia está revisando buf.msg_qnum? Eso no está claro ya que también tiene un "int num_messages" inexplicado. – Duck