繁体   English   中英

如何监视输出文件并在所需目录中移动/重命名

[英]How I can monitor the output files and move/rename in desired directory

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

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

(我的意思是说您必须不更改文件名,而不是您不知道如何。)

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

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

如何使用更简单的方法:

我建议您每次要写入文件时,使用std :: stringstream生成唯一的pfn(路径文件名)。 例如,可以在不可修改文件名后附加一个递增的数字。

就像是:

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

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

   uniqueFileName = ss.str();

   return(uniqueFileName);
}

祝好运。


聚苯乙烯

如果您觉得必须先使用正确的文件名写入文件,然后将文件名更改为唯一的名称...是的,您可以在此程序中重命名文件(即微不足道的同步)

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

其他人则喜欢system()之类的东西(大约有6个)。

无论哪种情况,都可以使用命令重命名现有文件(向每个文件提供bash命令,例如mv fromPfn toPfn,或者可能需要cp。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM