C++ 防止外部程序写入文件,而不会在外部程序中出现错误

C++ 防止外部程序写入文件,而不会在外部程序中出现错误,c++,file-io,windows-xp,exe,popen,C++,File Io,Windows Xp,Exe,Popen,我们有一个外部程序(20年前的.exe;我们没有源代码),它从一个文件(例如“input.txt”)读取输入,并将结果写入另一个文件(例如“output.txt”)。该程序还向控制台打印一些输出。我想用各种输入文件执行这个程序数百万次,并对结果进行处理。我用C++来做这个。 目前我已经编写了一个程序 1) 写入输入文件, 2) 使用popen()执行外部程序,并 3) 从控制台输出读取结果 但是,文件操作不是很快,我想阻止程序写入输出文件,因为它比控制台输出大,我只需要打印到控制台的信息。但是,

我们有一个外部程序(20年前的.exe;我们没有源代码),它从一个文件(例如“input.txt”)读取输入,并将结果写入另一个文件(例如“output.txt”)。该程序还向控制台打印一些输出。我想用各种输入文件执行这个程序数百万次,并对结果进行处理。我用C++来做这个。 目前我已经编写了一个程序 1) 写入输入文件, 2) 使用popen()执行外部程序,并 3) 从控制台输出读取结果


但是,文件操作不是很快,我想阻止程序写入输出文件,因为它比控制台输出大,我只需要打印到控制台的信息。但是,如果外部程序无法打开输出文件进行写入,则执行将失败。是否有某种方法可以伪造它,这样外部程序会认为它正在编写一个文件,但实际上没有?程序仍然必须访问硬盘才能读取输入文件。我更喜欢在Windows XP下运行的解决方案。

谷歌快速搜索:

适用于WindowsXP、2003、2008、Vista、7和8的RAM磁盘


我与这个项目无关。这不是广告。我记得在DOS时代,RAM驱动器很流行。他们似乎还没有完全消失。您可以尝试使用其中一种方法。

您可能不会伪造写入过程(文件),但会加快写入过程。
unix为此提供了tmpfs,Windows有一些RamDisk解决方案

没有s.th吗。与windoze下的
/dev/null
类似?@g-makulik:是的,有
NUL
,但IIRC它只适用于流重定向(即控制台输出):我认为你不能像我们在*nix上那样将文件符号链接到
NUL
(当然,假设NTFS,FAT根本没有符号链接)。