Код: Выделить всё
#include
int main()
{
int s;
printf("Hello, World!\n");
printf("Enter a number: ");
scanf_s("%d", &s);
printf("The Square of %d is %d\n", s, s * s);
}
Код: Выделить всё
Process Cmd = new Process();
Cmd.StartInfo.FileName = "Square.exe";
//Cmd.StartInfo.FileName = "NoInput.exe";
Cmd.StartInfo.RedirectStandardInput = true;
Cmd.StartInfo.RedirectStandardOutput = true;
Cmd.StartInfo.CreateNoWindow = true;
Cmd.StartInfo.UseShellExecute = false;
Cmd.Start();
line = Cmd.StandardOutput.ReadLine();
rtbStatus.AppendText(line);
Cmd.StandardInput.WriteLine("30");
Cmd.StandardInput.Flush();
line = Cmd.StandardOutput.ReadToEnd();
rtbStatus.AppendText(line);
Cmd.WaitForExit();
Однако, если я добавлю fflush(stdout) после printf() в Square.c, все будет работать нормально, так что, похоже, это проблема с буферизацией. Я не могу войти в программу, которую пытаюсь запустить, и добавить fflushes(), могу ли я еще что-нибудь сделать, чтобы дать толчок StdOut?
Код: Выделить всё
NoInputeta: Если я записываю входные данные в процесс до того, как запрашиваю выходные данные, это работает!