Sto usando il seguente codice per eseguire un comando console Linux tramite Mono in un'applicazione C#:Esecuzione di un comando Console Linux in 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();
Questo funziona come previsto. Ma, se do il comando come "-c ls -l"
o "-c ls /path"
, ottengo ancora l'output con -l
e path
ignorato.
Quale sintassi dovrei usare per utilizzare più commutatori per un comando?
Si potrebbe provare a utilizzare 'ProcessStartInfo.Arguments' per vedere se il metodo alternativo funziona? Hai anche bisogno di/bin/bash? non puoi semplicemente eseguire 'ls' direttamente? – cjb110
@ cjb110 no, non funziona. Sì, devi impostare/bin/bash come nome file oppure non trovare l'eseguibile bash da solo. – ravindu1024
Forse prova RedirectStandardInput e invia i comandi. Non conosco il codice esatto, ma so che puoi farlo per inviare input al processo. Ecco un esempio: http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput(v=vs.110).aspx – NewfrontSolutions