2009-11-05 6 views
0

J'ai une file de messages à partir de laquelle je reçois des messages dans une boucle. Le problème est que je ne sais pas comment quitter la boucle. msgrcv renvoie le type size_t pour qu'il continue. Quelle valeur dois-je comparer la valeur de retour pour que je puisse sortir de la boucle?File d'attente de messages IPC. Appel système msgrcv. Système V. comment 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); 

Répondre

1

Parce que votre dernier paramètre ne comprend pas IPC_NOWAIT, msgrcv blocs en attendant messages. Si aucun message ne doit être lu immédiatement, msgrcv(..., ... | IPC_NOWAIT) renverra (size_t)-1 et définira errno = ENOMSG.

Questions connexes