Я использую следующий код
System::Diagnostics::Process^ p = gcnew System::Diagnostics::Process();
p->StartInfo->FileName = "tnccmd.exe";
p->StartInfo->UseShellExecute = false;
p->StartInfo->RedirectStandardInput = true;
p->StartInfo->RedirectStandardOutput = true;
p->Start();
System::IO::StreamWriter^ tnc_stdin = p->StandardInput;
System::IO::StreamReader^ tnc_stdout = p->StandardOutput;
tnc_stdin->WriteLine("connect i 127.0.0.1");
String^ prg_output = tnc_stdout->ReadToEnd();
Моя проблема в том, что я не могу правильно прочитать stdout
. Однако я могу легко написать в stdin
, но сейчас я пытаюсь реализовать код проверки ошибок, и он не работает.
Программа, которую я использую, похоже, не записывает в stdout
, даже если она запускается из командной строки. Я могу воспроизвести bug
с ftp.exe
, который поставляется с Windows XP
по умолчанию. Если вы измените ->FileName
с помощью ftp.exe
, командная строка ftp.exe
обычно выдаст ftp>
, не будет отображаться в prg_output
.
Теперь я знаю, что в приглашении должен использоваться какой-то windows shell curses
, и я могу перепутать проблемы.
Обычно только после connect i 127.0.0.1
инструкции, которую я должен получить connecting to 127.0.0.1...
, но я ничего не получаю.
Любой намек на то, что я делаю не так? Есть ли другой тип stdout
, о котором я не знаю?
EDIT
Я не могу использовать аргументы, потому что мне нужно написать несколько строк, очень похоже на ftp.exe
.
Кроме того, ftp.exe
выводит, когда вы набираете такие команды, как dir. По крайней мере, он выводит, когда вы пишете неизвестные команды, он жалуется на Invalid command
.