如何监视输出文件并在所需目录

时间:2015-05-13 02:08:08

标签: c++ bash ubuntu

程序在每15次迭代后生成一个文本文件。由于使用相同的名称,它会用新的output.txt(在第30步形成)覆盖output.txt(在第15步形成)。我无法修改程序中的文件名。我可以在监控我的目录的Ubuntu系统上同时运行一些脚本,并在output.txt文件形成时将其移动到所需目录或更改输出文件名吗?

1 个答案:

答案 0 :(得分:0)

  

我无法在程序中修改文件名。

(我认为这意味着您不需要更改文件名,而不是您不知道如何。)

您已将此帖子标记为C ++。

虽然可以运行一些脚本来监视目录,但是协调名称更改并运行线程或其他进程(来自C ++)可能比其他选择更具挑战性。

如何更简单的方法:

我建议每次要编写文件时使用std :: stringstream生成唯一的pfn(path-file-name)。例如,递增的数字可以附加到unmodifiable-file-name。

类似的东西:

std::string uniqueFileName(void)
{
   std::stringstream ss;

   //     vvvvvvvvvv -- unmodifiable-file-name is not changed
   ss << "output.txt" << ++fileCount; 

   uniqueFileName = ss.str();

   return(uniqueFileName);
}
祝你好运。

PS

如果您认为必须先使用正确的文件名编写文件,然后将文件名更改为唯一的...是的,您可以在此程序中重命名该文件(即平凡的同步)

我会使用popen(),因为我觉得它提供了更多的反馈,我之前已经使用过它。

其他人喜欢像system()这样的东西(其中大约有6个)。

在任何一种情况下,使用命令重命名现有文件(每个你提供一个bash命令,如mv fromPfn toPfn,或者你可能需要cp。

对于每个代码,在命令完成之前,代码不得继续。