Как программно выполнять команды в терминале ma c с использованием C # / Mono - PullRequest
0 голосов
/ 23 февраля 2020

Я могу открыть новое окно терминала, используя System.Diagnostics.Process, но не могу ничего записать в терминал, используя StandardInput.WriteLine.

Окно терминала открывается, но в окно терминала не записываются никакие команды. .

Пример кода:

    var startInfo = new ProcessStartInfo {
        FileName = @"/System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal",
        UseShellExecute = false,
        RedirectStandardOutput = true,
        RedirectStandardError = true,
        RedirectStandardInput = true,
        UserName = System.Environment.UserName
    };

    using (var process = Process.Start (startInfo)) {
        process.StandardInput.WriteLine ("nuget"); // cannot get anything written to the terminal
    }

1 Ответ

0 голосов
/ 23 февраля 2020

Я думаю, вы можете использовать код как показано ниже:

    public static void ExecuteCommand(string command)
    {
        Process proc = new System.Diagnostics.Process ();
        proc.StartInfo.FileName = @"/System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal";
        proc.StartInfo.Arguments = "-c \" " + command + " \"";
        proc.StartInfo.UseShellExecute = false; 
        proc.StartInfo.RedirectStandardOutput = true;
        proc.Start ();

        while (!proc.StandardOutput.EndOfStream) {
            Console.WriteLine (proc.StandardOutput.ReadLine ());
        }
    }

    public static void Main (string[] args)
    {
        ExecuteCommand("nuget");
    }
...