這個簡單的代碼:需要哪些權限才能成功執行boost :: filesystem :: last_write_time?
std::time_t tm = boost::filesystem::last_write_time(filename);
boost::filesystem::last_write_time(directory, tm);
引發「操作不允許」異常,如果是directory
由比一個執行代碼以外的用戶所擁有的路徑。
我有點困惑,因爲我正在處理具有777
或rwxrwxrwx
權限的目錄,並且我可以通過在shell中使用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還是其他?根據標記,可以使用linux, – leedm777 2012-04-12 14:29:23
。我注意到,我只是認爲Boost重新實現了它們。或者,也許我得到了錯誤的文件。要點是,它確實有效,除了那個古怪的許可之外。 – UncleZeiv 2012-04-12 17:28:01