gzip された tarball 内の特定のディレクトリに *.cpp ファイルをアーカイブする必要があります。プログラムから特定の結果セットを生成したコード (たとえば、どのソース コード ファイルのどのバージョン) を正確に文書化する手段として、これを実行時に実行する必要があります。
というわけで、以下の関数を書きました。通常は問題なく動作しますが、過去に 1 回か 2 回失敗しました。何が起こったのか正確には思い出せませんが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() );
}
上記の関数の最初の 2 行は、作成しようとしているアーカイブ ( ) と同じ名前の既存のファイルが存在する場合は、単純に削除しますdestinationFile
。最後の 2 行はそれぞれ、現在の作業ディレクトリにあるすべての .cpp ファイルの tarball を作成し、その tarball を gzip します。
STL または Boost ライブラリを使用してこの関数を書き直すにはどうすればよいですか?
私は Boost ライブラリの使用に非常に不慣れで、C++ でのファイルシステム管理に関してはまったく無知です。