この単純なコード:directory
コードを実行する1つ以上の他のユーザが所有しているパスである場合boost :: filesystem :: last_write_timeを正常に実行するためにはどのアクセス権が必要ですか?
std::time_t tm = boost::filesystem::last_write_time(filename);
boost::filesystem::last_write_time(directory, tm);
は、「操作許可されていない」例外をスロー。
私は777
またはrwxrwxrwx
権限を持つディレクトリを扱ってるように私はこれで少し困惑している、と私は簡単にシェルでtouch
を使用して、修正時刻を変更することができます。
何か不足していますか? Boostは必要以上のパーミッションを要求していますか?私はこれを解決する方法はありますか?
はここでブーストに関連するコードです:
handle_wrapper hw(
create_file(ph.c_str(), FILE_WRITE_ATTRIBUTES,
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0));
if (hw.handle == INVALID_HANDLE_VALUE)
return error_code(::GetLastError(), system_category);
return error_code(::SetFileTime(hw.handle, 0, 0, &last_write_time) != 0
? 0 : ::GetLastError(), system_category);
'GetLastError'と' SetFileTime'はWindows関数です。これはLinux、Cygwinなどでですか?タグごとに – leedm777
linux。 Boostがそれらを再実装したと私は考えていました。あるいは、私は間違ったファイルを持っているかもしれません。ポイントは、それは奇妙な許可のものを除いて、動作します。 – UncleZeiv