Używam poniższy kod, żeby uruchomić polecenie Linux konsoli poprzez Mono w aplikacji C#:uruchamiając komendę konsoli Linuksa w 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();
To działa zgodnie z oczekiwaniami. Ale jeśli wydam polecenie jako "-c ls -l"
lub "-c ls /path"
nadal otrzymuję dane wyjściowe z ignorowanymi -l
i path
.
Jakiej składni należy użyć przy użyciu wielu przełączników dla polecenia?
Można spróbować użyć 'ProcessStartInfo.Arguments' aby sprawdzić, czy alternatywna metoda działa? Czy potrzebujesz także/bin/bash? czy nie możesz po prostu uruchamiać "ls" bezpośrednio? – cjb110
@ cjb110 nie, to nie działa. Tak, musisz ustawić/bin/bash jako nazwę pliku lub nie może on sam znaleźć pliku wykonywalnego bash. – ravindu1024
Może wypróbuj RedirectStandardInput i wyślij polecenia. Nie znam dokładnego kodu, ale wiem, że możesz to zrobić, aby wysłać dane wejściowe do procesu. Oto przykład: http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardinput(v=vs.110).aspx – NewfrontSolutions