Communication processus sous windows[Resolu] [C] - C - Programmation
Marsh Posté le 20-02-2005 à 00:04:35
CreateProcess ne redirige rien, au mieux il s'occupe de dupliquer les handles.
Donc c'est plutot le code de initialisationHandle qu'il faudrait voir.
Je me demande aussi l'utilité de ta fonction fermeHandle, un CloseHandle ne suffit pas ?
Rediriger les E/S avec les pipes c'est assez complexe, car y'a une gymnastique à faire au niveau des handle afin de ne pas tous les faire hériter car ça peut poser des problèmes pour détecter la fermeture du pipe notamment. Mais heureusement tu as un articles qui te donne tout le code pour faire ça proprement:
http://support.microsoft.com/defau [...] -us;190351
Marsh Posté le 20-02-2005 à 17:07:44
HelloWorld a écrit : CreateProcess ne redirige rien, au mieux il s'occupe de dupliquer les handles. |
Et bien merci, ça m'a bien aider
(je me suis aussi servit de http://msdn.microsoft.com/library/ [...] cesses.asp )
Mon erreur était donc la non duplication des tubes de lecture & ecriture du processus père (donc j'envoyais rien au fils...) & aussi, tjrs dans le père, l'initialisation de la structure STARTUPINFO était mal faite...
Et pour le fils, bah, j'ai fais 1 autre erreur : a la place d'un pointeur, j'ai mis un NULL donc plantage du processus fils (pourtant, quand il marchait seul, ça marchait bien...)
Encore Merci
Marsh Posté le 19-02-2005 à 17:40:05
Bonjour,
Je dois réaliser un petit programme qui fait communiquer deux processus :
Le processus fils est un simple programme qui mets en majuscule ce qu'il reçoit sur l'entrée standard & ecrit sur la sortie standart la même chose, mais en majuscule. (ça, normalement, ça mache)
Vient ensuite le processus père : il demande juste une chaine de caractère & envoit ça au processus fils, mais j'ai l'impression que la fonction CreateProcess ne redirige pas correctement mes tubes
(c-a-d que le pipe1 doit devenir l'entré standard du processus, & le pipe2 la sortie standard) & du coup ça marche pas... (mon filtre se lance & attend une entrée que je dois fournir au clavier....)
Donc, pensez vous que mon CreateProcess (ligne 22 du main) est mal utilisé ? Si c'est le cas, comment faire pour que mes tubes deviennent les entrées & sorties standard de mon filtre.(Pourtant, j'ai indiqué au CreateProcess de faire hériter les tubes...)
Merci
Code du processus père
Fonction d'écriture dans les tubes
Message édité par zapan666 le 20-02-2005 à 17:08:18