先说一些细节:

  • 我正在使用 C++ ( Armadillo library ) 和 R 的组合。
  • 我使用 Ubuntu 作为我的操作系统。
  • 我是 不是 使用 Rcpp

  • 假设我有一些名为 cpp_code 的 C++ 代码,它:
  • 从 R 读取整数
  • 作为输入
  • 执行一些计算,
  • 将电子表格“out.csv”保存为 R 的输出。 (我使用 .save( name, file_type = csv) )

  • 一些简化的 R 代码是:
    for(i in 1:10000)
    {
     system(paste0("echo ", toString(i), " | ./cpp_code")) ## produces out.csv
     output[i,,] <- read.csv("out.csv") ## reads out.csv
    }
    

    我的问题:

    99% 的情况下,一切正常。但是,我时不时地会收到一些不寻常的 .tmp 文件,例如:“out.csv.tmp_a0ac9806ff7f0000703a”。这些 .tmp 文件只出现一秒钟左右,然后突然消失。

    问题:
  • 这是什么原因造成的?
  • 有没有办法阻止这种情况发生?

  • 请放轻松,因为计算不是我的主要学科。

    非常感谢您的宝贵时间。

    最佳答案

    许多程序将其输出写入临时文件,然后将其重命名为目标文件。如果进程在写入时被终止,通常这样做是为了避免留下半写入的输出文件。通过使用临时文件,文件可以自动重命名为输出文件名,确保:

  • 整个输出文件是否正确写入或
  • 没有对输出文件
  • 进行任何更改

    请注意,通常仍有一些竞争条件可能会导致,例如,输出文件被删除但临时文件未重命名,但上述两种结果之一是总体目标。

    关于c++ - 这些 .tmp 文件来自哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23275916/

    10-11 23:05
    查看更多