在C#中,您可以使用ProcessStartInfo类创建新进程。此类具有属性UseShellExecute,必须将其设置为false才能重定向标准输入和标准输出。
如果此属性设置为true,那么OS shell应该启动该过程。
这很方便,因为标准输出已经按照我想要的方式传送到屏幕。因此,我很好奇是否可以使用任何其他方法写入流程。如果shell正在处理屏幕输出,那么我是否可以让shell获取我想要的输入命令?
我知道我可以自己重定向标准输出和标准输入,但看到输出已经被shell处理得很好,我一直想知道是否有更简单的方法。
答案 0 :(得分:2)
听起来你希望能够写入进程,同时允许shell写入进程。
这引入了很多订购问题,因此是不允许的。
但是,您可以将UseShellExecute
设置为true
,但将RedirectStandardOutput
保留为false
,以避免必须处理程序的输出。您需要将RedirectStandardInput
设置为true
并处理您的程序输入到程序中。
请记住,通过手动执行管道,所有同步问题都会消失,因为您有机会控制数据何时流过。在最简单的情况下,您想要运行程序,输入一些数据,然后让用户控制,您可以确保用户不会意外地妨碍您的自动化。