Monday, March 6, 2017

Redirectstandardoutput Processstartinfo Waitforexit

Elina: merci pour votre réponse. Certaines notes au bas de cette doc MSDN (msdn. microsoften uslibraryhellip) avertissent des potentiels blocages si vous lisez à la fin des flux stdout et stderr redirigés de manière synchrone. Il est difficile de dire si votre solution est susceptible à ce problème. En outre, il semble que vous envoyez le process39 stdoutstderr sortie en arrière en entrée. Pourquoi. ) Ndash Matthew Piatt Sep 26 16 at 4:42 Il s'agit d'une solution plus moderne, attendue, Task Parallel Library (TPL) pour 4.5 et plus. Exemple d'utilisation Exécution répondu Oct 5 16 at 10:54 I chose que c'est simple et mieux approche (nous n'avons pas besoin AutoResetEvent): Répondue 14 juin à 14h29 Vrai, mais shouldn39t vous faites. File Name Chemin quotggsci. exequot quot lt Obeycommand. txtquot pour simplifier votre code trop Ou peut être quelque chose d'équivalent à quotecho quotggsci. exequot quotggsci. exequot commande si vous ne don39t vraiment envie d'utiliser un fichier obeycommand. txt distinct. Ndash Amit Naidu Jun 4 13 at 22:03 Votre solution n'a pas besoin AutoResetEvent mais vous sondage. Lorsque vous faites des sondages au lieu d'utiliser l'événement (quand ils sont disponibles), alors vous utilisez l'UC sans raison et qui indiquent que vous êtes un mauvais programmeur. Votre solution est vraiment mauvaise par rapport à l'autre utilisant AutoResetEvent. (Mais je ne vous ai pas donné 1 parce que vous avez essayé d'aider). Ndash Eric Ouellet Nov 7 14 at 18:38 J'avais le même problème, mais la raison était différente. Cela se produira toutefois sous Windows 8, mais pas sous Windows 7. La ligne suivante semble avoir causé le problème. La solution était de ne pas désactiver UseShellExecute. J'ai maintenant reçu une fenêtre popup Shell, qui est indésirable, mais beaucoup mieux que le programme d'attente pour rien de particulier à se produire. Donc, j'ai ajouté le travail suivant autour de cela: Maintenant, la seule chose qui me dérange est de savoir pourquoi cela se passe sous Windows 8 en premier lieu. J'ai essayé de faire une classe qui permettrait de résoudre votre problème en utilisant asynchrone flux lire, en prenant en compte Mark Byers, Rob, stevejay réponses. Ce faisant, j'ai réalisé qu'il y avait un bug lié au flux de sortie de processus asynchrone. Vous ne pouvez pas faire cela: Vous recevrez System. InvalidOperationException. StandardOut n'a pas été redirigé ou le processus n'a pas encore démarré. Ensuite, vous devez démarrer une sortie asynchrone lue après le démarrage du processus: En faisant cela, faites une condition de course car le flux de sortie peut recevoir des données avant de le définir en asynchrone: alors certaines personnes pourraient dire que vous avez juste à lire le flux avant vous Définissez le en mode asynchrone. Mais le même problème se produit. Il y aura une condition de course entre la lecture synchrone et configurera le flux en mode asynchrone. Il n'existe aucun moyen de réaliser une lecture asynchrone sécurisée d'un flux de sortie d'un processus de la manière réelle Process et ProcessStartInfo a été conçu. Vous êtes probablement mieux en utilisant la lecture asynchrone comme suggéré par d'autres utilisateurs pour votre cas. Mais vous devriez être conscient que vous pourriez manquer certaines informations en raison de course condition. Im connexion à la machine linux à distance avec l'aide de mastic. ProcessStartInfo pInfo nouveau ProcessStartInfo () pInfo. Arguments quot ssh prateek10.202.167.34 pw passwordquot pInfo. FileName quotC: UsersprateekDesktopPUTTY. EXEquot Process p nouveau Processus () p. StartInfo pInfo Après cette session de mastic commence, alors je dois me connecter SuperUser (webAdmin) et donner le mot de passe. Comment puis je fournir ou modifier à la fois userName et mot de passe dans pInfo. Arguments après login comme prateek (userName). Bonjour, vous avez besoin d'utiliser les flux StandardInput et StandardOutput pour lire et écrire du contenu dans le processus: Hope this helps, Proposé comme réponse par Jason Dot Wang Microsoft contingent mercredi, 03 octobre, 2012 5:55 AM Marqué comme réponse par Jason Dot Wang Microsoft contingent mercredi, 10 octobre, 2012 2:44 AM Monday, October 01, 2012 1:25 PM Bonjour, comme un exemple sur la façon d'interagir avec inputoutputerror dans les applications de console, vous pouvez Utilisez le code suivant: J'espère que cela vous aidera et si vous avez encore des doutes me le faire savoir. Marqué comme réponse par PrateekThakur Mercredi, 03 Octobre 2012 5:25 Mardi 02 Octobre 2012 12:52 PM Toutes les réponses Bonjour, vous devez utiliser les flux StandardInput et StandardOutput pour lire et écrire du contenu dans le processus: Hope this helps , Proposé comme réponse par Jason Dot Wang Microsoft contingent mercredi 3 octobre 2012 5:55 Marqué comme réponse par Jason Dot Wang Microsoft mercredi 10 octobre 2012 02:44 Lundi, Octobre 01, 2012 1:25 PM Un problème est que, quand je donne le mot de passe dans la ligne séparée, il ne l'accepte pas, il est toujours demander le mot de passe dans la console. Process p new Process () p. StartInfo pInfo p. StartInfo. UseShellExecute false p. StartInfo. RedirectStandardInput true StreamWriter myStreamWriter p. StandardInput myStreamWriter. WriteLine (quotsudo su webadminquot) myStreamWriter. WriteLine (quotpasswordquot) De quelle manière nous pouvons fournir un mot de passe StandardIn Merci pour votre aide. Bonjour, vous pouvez d'abord lire le StandardOutput pour obtenir le texte quotPassword: quot, alors vous avez su que l'application est prête à lire le mot de passe. Ensuite, utilisez StandardInput pour écrire le mot de passe. Le problème est quand je place RedirectStandardOutput à true, il ne marche pas exécuter le processus jusqu'à la fin, il entre comme par exemple: pInfo. Arguments quot ssh prateek10.202.104.20 pw passwordquot pInfo. FileName quotC: UsersprateekDesktopPLINK. EXEquot Processus p nouveau Processus () p. StartInfo pInfo p. StartInfo. UseShellExecute false p. StartInfo. RedirectStandardInput true p. StandardInput. WriteLine (quotsudo su webadminquot) Mais quand RedirectStandardOutput est true, ie pInfo. Arguments Quot ssh prateek10.202.104.20 pw passwordquot pInfo. FileName quotC: UsersprateekDesktopPLINK. EXEquot Process p nouveau Process () p. StartInfo pInfo p. StartInfo. UseShellExecute false p. StartInfo. RedirectStandardInput true p. StandardInput. WriteLine (quotsudo su Webadminquot) C'est l'attente pour un temps indéfini. Alors, comment puis je obtenir quotPassword: quot texte, lorsque ce processus est d'arrêt entre une durée indéfinie de temps


No comments:

Post a Comment