程序在每15次迭代后生成一个文本文件。由于使用相同的名称,它会用新的output.txt
(在第30步形成)覆盖output.txt
(在第15步形成)。我无法修改程序中的文件名。我可以在监控我的目录的Ubuntu系统上同时运行一些脚本,并在output.txt
文件形成时将其移动到所需目录或更改输出文件名吗?
答案 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。
对于每个代码,在命令完成之前,代码不得继续。