Я работаю над программным обеспечением, которое анализирует файл с командами, и ему нужно выполнить все команды. Просматривая StackOverFlow, я нашел следующий фрагмент:
String command = @".\wrap.exe sys";
using (Process myProcess = new Process())
{
myProcess.StartInfo.UseShellExecute = false;
// You can start any process, HelloWorld is a do-nothing example.
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.FileName = "CMD.exe";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.Arguments = command;
myProcess.Start();
string output = myProcess.StandardOutput.ReadToEnd();
myProcess.WaitForExit();
}
По какой-то причине команда myProcess.StandardOutput.ReadToEnd()
зависает, если я ее запускаю (Даже если я изменяю порядок этой команды и этой команды myProcess.WaitForExit()
и стандарт Команда вывода ошибок также зависает (какие-либо идеи, почему эти команды зависают?).
Если я изменю FileName = "CMD.exe"
на FileName = "wrap.exe"
и Arguments ="sys"
, это будет работать. Проблема в том, что я не хочу разбивать это к аргументам и fileName. Есть ли способ сделать это (например, в Python с использованием подпроцесса)?