cola de mensajes IPC. msgrcv llamada al sistema. V. Sistema cómo salir del bucle
-
18-09-2019 - |
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);
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