간단한 코드 : directory
코드를 실행하는 하나 이상의 다른 사용자가 소유 경로인지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
리눅스. 나는 Boost가 그들을 다시 구현한다고 생각했습니다. 아니면 잘못된 파일을 가져 왔을 수도 있습니다. 요점은, 그 이상한 권한을 제외하고는 효과가 있다는 것입니다. – UncleZeiv