c++输入输出重定向

感觉windows上使用输入输出重定向的地方不多,可能是因为Windows上大多是GUI的程序吧。如果是做单元测试console需要输入大量数据或者是调用一个console程序,需要获得它的输出的时候,IO重定向就是它大展身手的时候了。

c语言的重定向

c语言的重定向用freopen来实现,跟文件的读写类似。

c++的重定向

重定向子进程的输入输出流

在封装某些软件功能时候,我喜欢通过命令行调用隐藏窗口的方式现成的console exe程序,然后再把被调exe的输出重定向到自己。这样用户就看不到黑乎乎丑陋的console窗口,软件模块功能之间耦合也不是很重。

重定向子进程的输入输出流是用管道pipe实现的,微软Creating a Child Process with Redirected Input and Output这篇文章有介绍。

曾经我认为重定向输入也有用,实际上几乎没有重定向子进程输入的情况。一是这需要子进程的代码配合,二是真的很少见。

因为读子进程的输出会阻塞程序,最好起一个线程专门去做这个事情。

发表评论

电子邮件地址不会被公开。 必填项已用*标注