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 回答