是否有一种可移植的(std::filesystem)方法来测试文件是否“锁定”或具有“只读”权限?例如,MacOS Finder 有一个“锁定”设置,它与标准 POSIX 的“权限”不同。
在尝试执行删除操作之前,我需要测试是否可以删除文件。理想情况下,我想避免为 R/W 打开文件作为测试。
这是在 SAVE/RENAME 过程中,并且(至少在过去的 MacOS 文件系统中),即使文件在 Finder 中被“锁定”,操作系统对“交换”两个文件的调用仍然有效。由于围绕如何保存文件以及如何“保留”以前的版本的复杂性,最好提前知道这样可以避免操作。
进一步说明:在具有读写权限的 LOCKED 文件上以 R/W (std::ios::out | std::ios::in) 的形式打开流将失败,并且 errno = 1(不允许操作)。如果文件是只读但未锁定,它将失败并显示 errno 13(权限被拒绝)。
此处讨论了测试锁定位的 MacOS (Cocoa) 特定方法: