我需要将 *.cpp 文件存档在 gzip 压缩包内的特定目录中。我需要在运行时发生这种情况,以准确记录哪些代码(例如,哪些源代码文件的哪些版本)从程序中产生了一组特定的结果。
所以,我写了以下函数。它通常可以正常工作,但过去曾出现过一两次故障。我不记得到底发生了什么,但我记得我认为这是由于system()
在 c++ 程序中使用而不是实际执行文件删除和归档。
void saveSourceCode_TarGZ(string destinationFile) {
system( ("rm -f " + destinationFile).c_str() );
system( ("rm -f " + destinationFile + ".gz").c_str() );
system( ("tar -cvf " + destinationFile + " ./*.cpp").c_str() );
system( ("gzip " + destinationFile).c_str() );
}
上述函数中的前两行只是删除与我正在尝试创建的存档同名的现有文件(destinationFile
如果存在)。最后两行分别在当前工作目录中创建一个包含所有 .cpp 文件的 tarball,然后 gzip 该 tarball。
如何使用 STL 或 Boost 库重写此函数?
我在使用 Boost 库方面非常缺乏经验,而且在 C++ 中的文件系统管理方面我完全无知。