macos - 在 Mac 上使用 KEXT 进行文件 I/O

标签 macos bsd kernel-extension

观察到有vn_xxx api对文件进行操作,例如vn_rdwr(...)。从网络搜索来看,似乎不建议使用 vn_rdwr(...) 。

几乎没有相同的查询:

  • 此 vn_xxx API 是否在 Mac OS X 版本之间不兼容?
  • 使用它不安全吗?有没有例子可以引用一下 vn_rdwr 是如何使用的?
  • 除了将文件 I/O 委托(delegate)给守护进程之外,还有其他选择吗?

如果有人可以提供意见\建议那就太好了?

最佳答案

我相信 vn_rdwr() 是安全的并且保证兼容。

之所以不普遍推荐,是因为它的级别非常低。通过使用它,您可以有效地解决任何 FS 文件权限问题,避免调用通过 KAuth API 注册的回调(例如,聚光灯看不到此类更改)等。在大多数情况下,您应该在用户空间中执行 I/O(例如某些守护进程) .

只有当您确实有充分的理由这样做时才去 KExt 中的 I/O。如果您有,请使用vn_rdwr()

关于macos - 在 Mac 上使用 KEXT 进行文件 I/O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10654495/

相关文章:

bash - sed 使用 : expected context address

UNIX 'comm' 实用程序允许在 BSD 中不区分大小写,但在 Linux 中不允许(通过 -i 标志)。我如何在 Linux 中获取它?

php - Docker 容器中响应时间缓慢 : Laravel 5. 2

macos - MacOS 上的 sed "undefined label"

swift - 在 Swift for macos 中访问用户环境变量

macos - 使用自定义 kext 在 MAC OS X 上隐藏 USB 音频设备

macos - 多配置 USB 设备 - Catalina 中的问题

c++ - OpenCV 错误 : Assertion failed (src1. size == dst.size && dst.type() == CV_8U) in cvInRangeS

linux - 在哪些情况下选择 BSD 系统而不是 Linux 是明智的?

macos - 默认情况下可以在紧急日志中显示调试 KEXT 符号吗?