3

基本的には、システム コール touch と同じことを実行したいと考えています (ファイルが存在しない場合はファイルを作成し、存在する場合は変更タイムスタンプを更新します)。

std::string file = ...;
std::ofstream(file.c_str(), std::ios::app);

これにより、ファイルが存在しない場合は作成されます。ただし、変更時間は変更されません。

std::string file = ...;
std::ofstream(file.c_str(), std::ios::out);

これにより、存在しない場合は作成され、存在する場合は変更時刻が更新されますが、ファイルが存在する場合は切り捨てられます。

では、どうすればファイルに触れることができますか?

4

1 に答える 1

2

Kerrek SB が解決策を投稿しましたが、残念ながら回答ではなくコメントに記載されています (私はむしろ彼の回答を受け入れたいと思います)。

私はutime(2)で成功しました:

#include <utime.h>
...
std::string path = "/path/to/my/file";
bool success = !utime(path.c_str(), 0);

David Schwartzは、ナノ秒の精度についてutimensatに言及しました。

于 2014-11-03T14:04:07.497 に答える