加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 这些.tmp文件来自哪里?

发布时间:2020-12-16 09:51:58 所属栏目:百科 来源:网络整理
导读:首先,一些细节: 我正在使用C(Armadillo library)和R的组合. 我使用Ubuntu作为我的操作系统. 我没有使用Rcpp 假设我有一些名为cpp_code的C代码: 作为R的输入读取整数, 执行一些计算, 将输出保存为R的电子表格“out.csv”. (我用.save( name,file_type = csv
首先,一些细节:

>我正在使用C(Armadillo library)和R的组合.
>我使用Ubuntu作为我的操作系统.
>我没有使用Rcpp

假设我有一些名为cpp_code的C代码:

>作为R的输入读取整数,
>执行一些计算,
>将输出保存为R的电子表格“out.csv”. (我用.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文件只出现一秒左右,然后突然消失.

问题:

>是什么导致了这个?
>有没有办法阻止这种情况发生?

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

非常感谢您的宝贵时间.

解决方法

许多程序将其输出写入临时文件,然后将其重命名为目标文件.这通常是为了避免在写入过程中杀死进程时留下半写输出文件.通过使用临时文件,可以将文件原子重命名为输出文件名,从而确保:

>整个输出文件正确写入或
>未对输出文件进行任何更改

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读