Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1138 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] Timeout dans un processus ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Timeout dans un processus ?

n°378815
Caedes
Posté le 30-04-2003 à 19:05:08  profilanswer
 

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 !  :hello:


Message édité par Caedes le 30-04-2003 à 19:05:43
mood
Publicité
Posté le 30-04-2003 à 19:05:08  profilanswer
 

n°379018
Caedes
Posté le 30-04-2003 à 21:18:19  profilanswer
 

Personne n'a la moindre petite idée? Ca doit pas être bien sorcier !  :cry:

n°379179
Konar
Posté le 01-05-2003 à 00:44:52  profilanswer
 

caedes a écrit :

Personne n'a la moindre petite idée? Ca doit pas être bien sorcier !  :cry:  


 
jamais entendu parler des fct msgsnd et msgrcv, mais si tu parles d'utiliser la fct select, et si ca marche comme pour les socket, alors oui faut ke tu fasses un select avec timeout de x s. en sortie, le select (bloquant) te repond :  
 1. une erreur s'est produite.
 2. y a rien a recevoir dans les x sec ki se sont écoulées.
 3. y a des données a recevoir, faut faire un 'msgrcv'
 
ds le 2eme cas, le select ne retourne qu'apres les x sec. dans le 3eme, il retourne dès qu'il y a des infos a recevoir. dans le 1er ca depend.
 
voila, j'espere que ca a pas repondu a ta question.

n°379224
Caedes
Posté le 01-05-2003 à 09:18:44  profilanswer
 

Merci !
 
Les fonctions msgsnd et msgrcv servent en fait à communiquer par files de message sous Linux.
 
Maintenant, je ne sais pas comment utiliser les macros FD_SET pour implémenter cela...

n°379330
Konar
Posté le 01-05-2003 à 14:33:16  profilanswer
 

caedes a écrit :

Merci !
 
Les fonctions msgsnd et msgrcv servent en fait à communiquer par files de message sous Linux.
 
Maintenant, je ne sais pas comment utiliser les macros FD_SET pour implémenter cela...


 
a mon avis le select marche surtout pour les sockets, ca m'etonnerait que tu puisses l'utiliser avec tes msgsnd et msgrcv, mais bon tu peux tjrs essayer...
 

Code :
  1. struct timeval tv = {500, 0};
  2. fd_set read_set;
  3. FD_ZERO(&read_set);
  4. FD_SET(s, &read_set);
  5. int err = select(1, &read_set, NULL, NULL, &tv);


n°379337
Larry99
Posté le 01-05-2003 à 15:00:09  profilanswer
 

En fait, non, tu peux pas utiliser select avec msgrecv et msgsnd : pour select, il faut toujour avoir un descripteur de fichier et il n'y en a pas avec les IPC ... Si quelqu'un trouve, moi aussi je suis interessé, j'ai eu le même problème mais j'ai rien trouvé de bien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] Timeout dans un processus ?

 

Sujets relatifs
Sessions et Timeoutpb gestion du TimeOut avec ReadFile
TCP-IP Pb recv bloquant et terminaison de processus[C++] Regler le timeout d'un connect (création d une Socket) URGENT
[Resolu] timeout sur un recv(...) ca existe?synchronisation de processus
comment baisser le timeout d'une exception??[VC++]Etat d'un processus Windows (Service)
Comment implémenter un processus persistant sur un serveur web?[XSLT] les balises <xsl:param name="param1"> dans 1 processus XSLT
Plus de sujets relatifs à : [C] Timeout dans un processus ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR