-1

我已经编写了 C# 命令窗口应用程序。我在 main() 内的命令行上运行了一堆进程。例如

void main()
{
    process p1 = new process()
    set p1 properties
    p1.start()
 -->p1.StandardInput.WriteLine("start /WAIT cmd.exe /c BUILD -cZP");
}

这一行将在一个新的命令窗口中执行一些程序。在执行最后一行时,我将使用 ctrl+c 中断此执行并将控制权返回给主程序的执行。

循环输出到执行窗口。

p1.StandardInput.WriteLine("Done some action"); 
p1.WaitForExit();
p1.Close();

上面三行没有执行。问题是 p1 永远不会关闭执行程序中的以下行。

process p2 = new process()
...
p2.waitforExit()
p2.close.

对上述挑战的任何见解都会很棒。谢谢。

4

1 回答 1

1

如果我正确理解你(我承认我可能不理解你),我相信问题是当你按CTRL-C进入进程 p1 时,你实际上是在杀死那个进程。然后,您尝试将文本发送到刚刚被终止的进程的标准输入。由于该进程不再可用于接受您的输入,因此主程序挂起。这是我最好的猜测。

于 2008-10-06T05:13:05.853 回答