Redirection de la console d'un programme appelé à l'appelant

Redirection de la console d'un programme appelé à l'appelant - C - Programmation

Marsh Posté le 06-06-2013 à 20:29:25    

Hello,
 
Je dois coder sous win une expece de wrapper pour un compilateur C (non Gcc) afin qu'il renvoir vers l'IDE (Netbeans) les messages d'erreurs du compilateur mais 'formatés' GCC
En gros :
 
Netbeans
commande build   ----------> Wrapper ---------   Compilateur C  --- erreurs / warning ----> Wrapper ----- erreurs formatées gcc ----> Netbeans
 
En gros , il y a une redirection de console (le compilateur appelé ne doit rien afficher sur la console mais rebalancer les infos au wrapper qui lui les rebalancera vers la console.
 
Mais voila , je n'ai pas pas trop de connaissance sur le sys windows , et j'avoue que je ne vois pas trop comment faire . Des idees ? :)

Reply

Marsh Posté le 06-06-2013 à 20:29:25   

Reply

Marsh Posté le 06-06-2013 à 22:58:00    

http://msdn.microsoft.com/en-us/li [...] 71%29.aspx ?
 
Attention: cette fonction a besoin de la variable d'environnement CMD, si elle est pas là = crash.
 
Chuis pas sûr que les _ sont nécessaires. Sous MinGW, on peut s'en passer (mais j'imagine que les fonctions ne sont pas complètement conforme au standard).

Reply

Marsh Posté le 06-06-2013 à 23:20:40    

tpierron a écrit :

Attention: cette fonction a besoin de la variable d'environnement CMD, si elle est pas là = crash.


Hmm, pas si tu verifies qu'elle n'est pas la ! :)

Reply

Marsh Posté le 07-06-2013 à 00:46:10    

J'aurais plutôt tendance à recommander d'utiliser CreateProcess, dont le paramètre LPSTARTUPINFO lpStartupInfo te permet de spécifier tes propres HANDLE pour les entrées et sorties standard. Attention cependant à bien consommer la sortie du programme créé pendant son exécution (suivant ce que tu fourniras en guise de handle, les écritures de la part du processus généré pourront être bloquantes, tu ne dois donc surtout pas considérer que tu consulteras le résultat une fois le programme terminé !)


Message édité par theshockwave le 07-06-2013 à 00:46:57

---------------
last.fm
Reply

Marsh Posté le 07-06-2013 à 07:22:14    

Ok merci pour vos réponses ! Je vais tester ça dans la journée :)

Reply

Marsh Posté le 07-06-2013 à 08:56:46    

Bon je viens de tester la première solution (la plus simple me semble t'il) et ca a l'air de fonctionner dans mon cas.
Par contre ca n'a l'air que de rediriger la sortie console et pas le stderr .Du coup malgre la pipe on peut avoir  
une sortie non désirée sur la console qui n'est pas redirigée vers le prog parent (lui aussi application console) :-/

Reply

Marsh Posté le 07-06-2013 à 10:33:12    

C'est pour ca qu'on utilise CreateProcess :o


---------------
last.fm
Reply

Marsh Posté le 07-06-2013 à 10:49:59    

@theshockWave : j'allais tester au si mais je n'avais encore point eu le temps ;-)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed