0 votes

File d'attente de messages IPC. Appel système msgrcv. Système V. Comment sortir de la boucle

J'ai une file d'attente de messages à partir de laquelle je récupère des messages dans une boucle. Le problème est que je ne sais pas comment sortir de la boucle. msgrcv retourne le type size_t donc il continue. Quelle valeur dois-je comparer à la valeur de retour pour pouvoir sortir de la boucle ?

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

1voto

ephemient Points 87003

Parce que votre dernier paramètre ne comprend pas IPC_NOWAIT , msgrcv bloque en attendant les futurs messages.

S'il n'y a pas de message à lire immédiatement, msgrcv(..., ... | IPC_NOWAIT) retournera (size_t)-1 et mettre errno = ENOMSG .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X