file d'attente de messages IPC. appel système msgrcv. Système V. comment sortir de la boucle
-
18-09-2019 - |
Question
J'ai une file d'attente de messages à partir de laquelle je reçois 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 ça continue. Quelle valeur dois-je comparer la valeur de retour, je peux 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);
La solution
Parce que votre dernier paramètre ne comprend pas IPC_NOWAIT
, blocs msgrcv
en attendant messages.
S'il n'y a pas de message à lire immédiatement, msgrcv(..., ... | IPC_NOWAIT)
retournera (size_t)-1
et réglez errno = ENOMSG
.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow