重定向进程输入并使用shell执行

时间:2014-03-14 19:03:35

标签: c# process stdout stdin

是否可以重定向 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");
}

0 个答案:

没有答案