如何以模式锁定 macOS 卷以进行独占读/写访问?
Posted
技术标签:
【中文标题】如何以模式锁定 macOS 卷以进行独占读/写访问?【英文标题】:How to modally lock a macOS volume for exclusive read/write access? 【发布时间】:2020-10-17 03:12:30 【问题描述】:我正在编写一个需要能够读取并可能修改实时卷的磁盘工具。
如果卷正在使用中,例如如果是启动卷,则不能简单地卸载卷来执行这些操作。
磁盘工具(或底层的diskutil
工具)能够在运行急救或通过“分区”对话框调整启动卷的大小时锁定已安装的卷。
我可以使用什么 API 来完成同样的任务? IE。我必须进行哪些调用才能锁定卷(并刷新挂起的写入),以及(可选)如何最好地锁定 UI,以便用户不会意外使用同时尝试修改卷的其他应用程序?
我可以接受私有框架和其他未记录的方式。毕竟,这是一个修复程序。它不会出现在 Mac App Store 中;)
【问题讨论】:
私有框架是否适合您?您可能会在 DiskManagement 框架中找到有用的东西。不确定是否有任何公开内容。 【参考方案1】:看来fcntl (fd, F_FREEZE_FS)
是解决方案。
我通过查看命令fsck_apfs
的代码找到了这个调用。它实际上为“live fsck (lock down for verify-only)”提供了“-l”选项。
现在我知道要寻找什么,我意识到它也记录在 Amit Singh 的 Mac OS X Internals 书中。
【讨论】:
以上是关于如何以模式锁定 macOS 卷以进行独占读/写访问?的主要内容,如果未能解决你的问题,请参考以下文章
您不具有对数据库的独占访问权限这一次。如果继续进行更改,您可能无法将其保存