簡體   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