Pregunta

Tengo una cola de mensajes de la que estoy recibiendo mensajes en un bucle. El problema es que no sé cómo salir del bucle. msgrcv Devuelve el tipo size_t por lo que sigue adelante. ¿Qué valor debería comparar el valor de retorno para que pueda salir del bucle?

while(msgrcv(msqid, &msgreceived, sizeof(msgreceived), BUFFER_CHANGED, 0) != -1){
    printf("%d %d %d %d ",msgreceived.value0,msgreceived.value1,msgreceived.value2,msgreceived.value3);
¿Fue útil?

Solución

Debido a que su último parámetro no incluye IPC_NOWAIT, bloques msgrcv a la espera de mensajes.

Si no hay ningún mensaje para ser leído inmediatamente, msgrcv(..., ... | IPC_NOWAIT) volverá (size_t)-1 y establecer errno = ENOMSG.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top