检查文件的访问模式稍微复杂一些,因为O_RDONLY(0)、O_WRONLY(1)和O_RDWR(2)常量不对应于打开文件状态标志中的单个位。因此,为了进行此检查,我们使用常量O_ACCMODE掩码来屏蔽标志值,然后测试是否与其中一个常量相等:
accessMode = flags & O_ACCMODE;
if (accessMode == O_WRONLY || accessMode == O_RDWR)
printf("file is writable\n");
我想了解表达式flags和O_ACCMODE是如何工作的。抱歉,我的格式可能有些不好,我是用手机写的。