Процесс Cmd не принимает команду? - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь прочитать вывод команды со следующим аргументом.

ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.Arguments = "nvidia-smi --query-gpu=utilization.memory --format=csv";
processStartInfo.UseShellExecute = false;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.CreateNoWindow = true;
Debug.Write("Test1 \n"); // it prints
Process process = Process.Start(processStartInfo);
using (StreamReader streamReader = process.StandardOutput)
{
    Debug.Write("Test2 \n"); // it prints
    output = streamReader.ReadToEnd();
    Debug.Write("Test3 \n"); // it doesn t print
}

String[] substrings = output.Split(delimiter2);

Следует отметить, что команда действительна, если я запускаю ее вручную.

1 Ответ

1 голос
/ 24 февраля 2020

Вот что вам нужно:

ProcessStartInfo processStartInfo = new ProcessStartInfo("nvidia-smi");
processStartInfo.Arguments = "--query-gpu=utilization.memory --format=csv";
processStartInfo.UseShellExecute = false;

Во-первых, cmd.exe - это не бинарный файл, который вы хотите запустить, потому что он не имеет аргументов командной строки nvidia. Вы действительно хотите запустить - nvidia-smi.

Вы можете столкнуться с исключениями, такими как File Not Found, если nvidia-smi отсутствует в переменной PATH. В этом случае вам придется использовать FULL PATH для двоичного файла.

Обновлено: 25/02/2020

Для меня работает следующее: enter image description here

Также обратите внимание, что моя компиляция нацелена на 64 бита: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...