J'utilise le code suivant pour exécuter une commande de console Linux via Mono dans une application C#:Exécution d'une commande console Linux en C#
ProcessStartInfo procStartInfo = new ProcessStartInfo("/bin/bash", "-c ls");
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
String result = proc.StandardOutput.ReadToEnd();
Cela fonctionne comme prévu. Mais, si je donne la commande comme "-c ls -l"
ou "-c ls /path"
je reçois toujours la sortie avec le -l
et path
ignorés.
Quelle syntaxe dois-je utiliser pour utiliser plusieurs commutateurs pour une commande?
Vous pouvez essayer d'utiliser 'ProcessStartInfo.Arguments' pour voir si la méthode alternative fonctionne? Aussi avez-vous besoin de/bin/bash? Ne pouvez-vous pas simplement lancer 'ls' directement? – cjb110
@ cjb110 non cela ne fonctionne pas. Oui, vous devez définir/bin/bash comme nom de fichier ou il ne peut pas trouver l'exécutable bash seul. – ravindu1024
Essayez peut-être RedirectStandardInput et envoyez les commandes. Je ne connais pas le code exact, mais je sais que vous pouvez le faire pour envoyer des commentaires au processus. Voici un exemple: http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput(v=vs.110).aspx – NewfrontSolutions