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

  FORUM HardWare.fr
  Programmation

  ALGO synchronisation de processus en C++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ALGO synchronisation de processus en C++

n°36950
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 05-06-2001 à 10:41:49  profilanswer
 

J'ai un petit prog qui en appelle un autre par le biais de la fonction CreateProcess(...)
Le premier doit "écouter" le second prog pour intercepter d'éventuelles sorties (printf ...) jusqu'à ce que le second prog se termine.
 
Mon problème est : comment faire pour que le prog appelé notifie le programme appelant ?

mood
Publicité
Posté le 05-06-2001 à 10:41:49  profilanswer
 

n°36952
petoulachi
A fortiori, brigadier chef
Posté le 05-06-2001 à 10:45:54  profilanswer
 

ze comprend pas ?

n°36965
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 05-06-2001 à 11:07:13  profilanswer
 

Qu'est ce que tu comprends pas ?
il faudrait que le programme appelé disent au prog appelant : "youhou ! j'ai fini ! tu peux continuer !".
 
Je pourrait bien faire un printf("Exit" ) dans mon prog appelé (j'ai créé des pipes qui redirige les sorties standard du programme appelé ) mais je trouve ça un peu bourin. Quelqu'un a une solution plus propre ?

n°36966
robUx4
misc coder
Posté le 05-06-2001 à 11:09:02  profilanswer
 

SendMessage(j'ai fini) ?

n°36967
petoulachi
A fortiori, brigadier chef
Posté le 05-06-2001 à 11:09:54  profilanswer
 

mmm bin en Java, ya une classe qui s'apelle InfoBus, qui permet de faire transiter des info d'une appli a une autre (une sorte de 'reseau' quoi). Ya peut etre l'equivalent en C++ ?

n°36968
minusplus
Posté le 05-06-2001 à 11:14:37  profilanswer
 

[mode trés lointains souvenirs on]
heuuu... mutex et sémaphores, ça dit quelque chose à qq1. ça sert dans la synchronisation des threads... peut-être qu'en cherchant là dessus, tu trouveras des infos...
Désolé mais c'est tellement loin que je me rappelle plus...
[mode trés lointains souvenirs off]

n°36971
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 05-06-2001 à 11:29:15  profilanswer
 

un truc dans ce style ? :
 
 while(statut == STILL_ACTIVE)
 {
             // traitement des sorties...
      GetExitCodeProcess(hprocess, &statut) ;
 }

n°37003
DuffBeer
Posté le 05-06-2001 à 13:32:56  profilanswer
 

minusplus a mis dans le mille. :hot:  :gun:  
Il faut utiliser l'algorithme de Dekker ou les sémaphores de Dijkstra ou bien encore les moniteurs de Hoare (ça fait peur la théorie !!! :pt1cable:  ).
Je ne peux pas te les donner de tête (et puis même c'est trop long à expliquer :D ), mais tu dois pouvoir trouver ça sur le net.
Bonne recherche ! :hello:

 

[edit]--Message édité par DuffBeer--[/edit]

n°37285
robUx4
misc coder
Posté le 06-06-2001 à 10:44:38  profilanswer
 

Mais non !
Parce que le programme qui écoute il va pas se mettre en attente d'un sémaphore ou encore moins d'un mutex.
 
Le plus simple c'est d'envoyer un message (en supposant que ce programme aie un dispatcheur de message). Sinon ben une attente sur un semaphore ou un mutex d'une milliseconde en le relachant juste après, ce qui est pas beau !

n°37341
wpk
Posté le 06-06-2001 à 13:13:36  profilanswer
 

vous allez loin vous, pourtant c'est tout con
 
WaitForSingleObject, regarde la doc la dessus, ca permet en autre chose, d'effectuer de la synchro sur plein de choses dont les process crees avec CreateProcess.

mood
Publicité
Posté le 06-06-2001 à 13:13:36  profilanswer
 

n°37409
oliv5
Pourquoi ? Parce que !
Posté le 06-06-2001 à 15:59:15  profilanswer
 

Je lit, dans la bible du PC, :
synchronisation de processus :  
fonctions : CreateEvent, CreateMutex, CreateSemaphore() auchoix.
 
2 methodes
1) transmittion du handle de l'objet de synchronisation par heritage pere->fils
2) utilisation d'un identifiant global à tout le systeme.
 
regarde ces fonctions en detail, ca devrait t'aider.

n°37414
DuffBeer
Posté le 06-06-2001 à 16:06:45  profilanswer
 

robUx4> En effet, je me suis tromper et je m'en excuse j'ai mal lu le pb de Moustaaki. :jap:  
wpk> Ta solution a l'air pas mal, mais je connais pas ? :??:  
oliv5> Je suivrais ton idée et j'utiliserai des signaux (SIG...)et des handlers. :sol:  
 :hello:

 

[edit]--Message édité par DuffBeer--[/edit]

n°37619
robUx4
misc coder
Posté le 07-06-2001 à 10:45:37  profilanswer
 

WaitForSingleObject c'est ce que tu utilises avec les sémaphores et les mutex...
 
Bref ca "prend" il faut donc ensuite "relacher". En temps-réel c'est pas terrible.
 
Sous Windows à ma connaissance il y a pas de fonction "Peek" (qui regarde si l'objet est positionné (set) ou pas). Et ca c'est BIEN dommage.

n°37667
rufo
Pas me confondre avec Lycos!
Posté le 07-06-2001 à 12:01:05  profilanswer
 

créer un tube via la fonction pipe(), ça marcherait? et tu passerait en paramètre à ton processus créé l'adresse de ce pipe

n°38029
Moustaaki
.: ILITCH :. ésprit sibérie
Posté le 08-06-2001 à 10:41:44  profilanswer
 

j'ai utilisé la fonction GetExitCodeProcess qui renvoie STILL_ACTIVE si le processus est encore actif...
Alors apparement, il y a plein de manière de faire une synchro.


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

  ALGO synchronisation de processus en C++

 

Sujets relatifs
[Prog systeme Unix] Ordonnaceur detecter les processus zombieprog pour dessiner des algos (et verif de mon algo sur equa diff)
[Java] Problème de synchronisation sur des servlets.[Algo] Appli de traitement du son
[ALGO] Comment marche une fonction random() ?[C/ALGO] Aidez une tarlouze en algo
[JAVA / ALGO ] logiciel de traitement de sonun algo de tracage de l'enveloppe d'un son
[BC++] Killer un processus[3DS] Algo d'un fichier ASE
Plus de sujets relatifs à : ALGO synchronisation de processus en C++


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