是否可以重定向 stdin
,还允许将stdout
写入控制台?
我有一个启动子进程的进程,需要读取这些进程的输出,但也会在控制台中显示它。可能吗?我试图创建自己的控制台进程,但除非我使用UseShellExecute并且目的是在控制台中显示输出,否则我无法写入它。
protected void startp() {
Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "cmd.exe";
psi.Arguments = "/k";
//Can't redirect output without UseShellExecute = false
psi.RedirectStandardInput = true;
psi.UseShellExecute = false;
psi.CreateNoWindow = false;
p.StartInfo = psi;
p.Start();
//Can't write to StandardInput with UseShellExecute = true
p.StandardInput.WriteLine("@ECHO OFF");
p.StandardInput.WriteLine("echo | set /p=Child Process");
Console.ReadLine();
p.StandardInput.WriteLine("exit");
}