J'ai un module qui lit le standardError d'un processus. Tout fonctionne bien, mais je veux faire quelque chose de différent. Je ne sais pas comment rediriger Stdin comme la voie native: p>
Où app2 lit toutes les stdoutes d'App1 dans son stdin. P> app1.exe -someargs | app2.exe -someargs code> p>
3 Réponses :
Une fois que vous avez le sur une note connexe, vous pouvez utiliser un processus code>
objet représentant le processus que vous souhaitez communiquer avec (soit parce que vous l'avez à partir du système d'exploitation à l'aide de la méthode statique processus.getprocesses code>
, ou parce que vous l'avez créé vous-même), vous pouvez joindre un Streamwriter code>
sur processus.standardinput code>
propriété et utilisez-le pour écrire sur le stdin de le processus. N'oubliez pas de définir processstartinfo.redirectStandardnput < / code>
sur votre processus nouvellement créé à vrai code>. p>
StreamReader Code>
sur le Process.StandardOutput code>
Pour lire la sortie (comme la lecture de StandardError code>). P>
Regardez la documentation de référence MSDN pour ce qui suit (toutes deux trouvées dans le app1 em> démarre app2 em> comme processus enfant utilisant la classe code> de processus code> (voir liens ci-dessus). P> li>
app1 em> écrit à app2 em> standard d'entrée en écrivant dans le app2 em> lit simplement des lignes de son entrée standard (par exemple via System.Diagnostics Code> Espace de noms): P>
Processstartinfo.redirectStandardInput code>
.
Il existe un exemple montrant comment démarrer un processus enfant et écrire directement à son entrée standard. P> li>
ul>
. Pstandardinput code> flux du processus
du processus code> objet associé à app2 em>. p> li>
console.readline () code>). P> LI>
ol>
Cette réponse devrait vous donner une bonne idée C # Console Recevoir une entrée avec tuyau
Mais la deuxième application n'est pas écrite par moi. Je dois envoyer des octets à la sous-processus, je ne les reçois pas.
@blez, il devrait être assez évident. L'écriture est le contraire de la lecture. Lorsque la réponse liée vous indique de lire à partir de la console, vous écrivez sur la console.