Bonjour !
Voilà, j'ai un petit problème avec un programme : J'ai différents processus collaborants par files de messages (envoi : msgsnd, reception : msgrcv). J'aimerais qu'un processus, si il ne recoit rien endéans les 5 secondes, envoie un message à un autre. Par contre, si il recoit quelque chose dans l'intervalle des 5 secondes, il doit envoyer un message puis recommencer un nouvel intervalle de 5 secondes.
J'ai pensé à différentes choses :
- un msgrcv seul, mais il bloque le processus indéfiniment tant qu'il ne recoit rien (ceci si son flag est à 0) ou regarde juste une fois si il n'y a rien dans sa file (IPC_NOWAIT)
- un sleep, mais alors il attend 5 secondes quoi qu'il arrive.
- une boucle, avec des msgrcv(.... IPC_NOWAIT) et une gestion de temps avec des routines de time.h , mais on fait difficilement plus laid comme code.
- j'ai entendu parler de select, mais je n'ai pas compris comment l'utiliser avec msgrcv.
Une piste quelqu'un ?
Merci beaucoup !
Message édité par Caedes le 30-04-2003 à 19:05:43