【发布时间】:2013-06-25 21:12:42
【问题描述】:
我们有一个外部程序(20 年前的 .exe;我们没有源代码),它从一个文件(例如“input.txt”)读取输入并将结果写入另一个文件(例如“output.txt”)。文本文件”)。该程序还将一些输出打印到控制台。我想用各种输入文件执行这个程序数百万次,并对结果做一些事情。我为此使用 C++。
目前我写了一个程序, 1) 写入一个输入文件, 2) 使用 popen() 执行外部程序,并且 3) 从控制台输出读取结果。
但是,文件操作不是很快,我想阻止程序写入输出文件,因为它比控制台输出大,我只需要打印到控制台的信息。但是,如果外部程序无法打开输出文件进行写入,则执行将失败。有没有办法伪造这个,让外部程序认为它正在写一个文件,但实际上没有?该程序仍然必须访问硬盘驱动器才能读取输入文件。我更喜欢在 Windows XP 下运行的解决方案。
【问题讨论】:
-
难道没有……类似于windoze下的
/dev/null? -
@g-makulik:是的,有
NUL,但 IIRC 它仅适用于流重定向(即控制台输出):我认为您不能将文件符号链接到NUL(假设NTFS,当然,FAT 根本没有符号链接)就像我们在 *nix 上所做的那样。
标签: c++ file-io windows-xp exe popen