在Mac OSX Mojave 10.14.6上,以下简单代码不再起作用:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
int main(int argc, char** argv)
{
int fd = open ("/dev/rdisk0", O_RDONLY);
if (fd == -1)
{
fprintf(stdout, "open(%s) error = %s\n", "/dev/rdisk0", strerror(errno));
fflush(stdout);
return 1;
}
return 0;
}
它给出了:
open(/dev/rdisk0) error = Operation not permitted
即使使用sudo
运行可执行文件,也会发生这种情况。
此代码曾经在10.13和更低版本下工作。
我认为这可能是由于SIP所致,我给了终端机和可执行文件Full Disk Access
,但没有帮助。
还有另一种解决此问题的方法吗?我现在如何打开/dev/rdisk0
?
预先感谢