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

 


Dernière réponse
Sujet : ALGO synchronisation de processus en C++
Moustaaki 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.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Moustaaki 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.
rufo créer un tube via la fonction pipe(), ça marcherait? et tu passerait en paramètre à ton processus créé l'adresse de ce pipe
robUx4 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.
DuffBeer 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]

oliv5 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.
wpk 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.
robUx4 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 !
DuffBeer 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]

Moustaaki un truc dans ce style ? :
 
 while(statut == STILL_ACTIVE)
 {
             // traitement des sorties...
      GetExitCodeProcess(hprocess, &statut) ;
 }
minusplus [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]
petoulachi 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++ ?
robUx4 SendMessage(j'ai fini) ?
Moustaaki 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 ?
petoulachi ze comprend pas ?
Moustaaki 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 ?

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)