【问题标题】:Prevent external program from writing into a file, without error appearing in the external program防止外部程序写入文件,外部程序不会出现错误
【发布时间】: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


【解决方案1】:

谷歌快速搜索:

http://www.softperfect.com/products/ramdisk/ 适用于 Windows XP、2003、2008、Vista、7 和 8 的 RAM 磁盘。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多