7
votes

Comment écrire au stdinal d'une autre application?

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:

app1.exe -someargs | app2.exe -someargs

Où app2 lit toutes les stdoutes d'App1 dans son stdin.


3 commentaires

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.


3 Réponses :


9
votes

Une fois que vous avez le processus 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 , ou parce que vous l'avez créé vous-même), vous pouvez joindre un Streamwriter sur processus.standardinput 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 .

sur une note connexe, vous pouvez utiliser un StreamReader sur le Process.StandardOutput Pour lire la sortie (comme la lecture de StandardError ).


0 commentaires

3
votes

Regardez la documentation de référence MSDN pour ce qui suit (toutes deux trouvées dans le System.Diagnostics Espace de noms):

  • processus.standardinput

  • Processstartinfo.redirectStandardInput .
    Il existe un exemple montrant comment démarrer un processus enfant et écrire directement à son entrée standard.

    pour votre exemple particulier, voici comment vous définissez les choses:

    1. app1 démarre app2 comme processus enfant utilisant la classe de processus (voir liens ci-dessus).

    2. app1 écrit à app2 standard d'entrée en écrivant dans le . Pstandardinput flux du processus du processus objet associé à app2 .

    3. app2 lit simplement des lignes de son entrée standard (par exemple via console.readline () ).


0 commentaires

0
votes

J'ai dû utiliser BarollyWriter, cet article explique tout: Barronnage et stdin


0 commentaires