C语言 如何理解O_RDONLY = 0?



我正在处理文件状态标志。 在我进行的测试中,我发现

#include <stdio.h>
#include "fcntl.h"
int main() {
const int flag = O_RDONLY;
printf( "*** Flag O_RDONLY = %5dn", flag);
return 0;
}

产生此输出

*** Flag O_RDONLY =     0

这完全符合

#define O_RDONLY         00

fcntl-linux.h.

如何将值零用作标志?

我希望"原子"标志是2^n(n>=1(,而"复合"标志(如O_ACCMODE(只是几个原子标志的总和(这与按位或这些原子标志相同(。
据我了解,我无法"检测"任何东西,也无法设置这样的标志。 像(stat & O_RDONLY)这样的按位和表达式将永远是错误的。

相关:

如何获取文件描述符的模式?(我问这个(

尽管这些在文档中称为标志,但这三个实际上并不是可以像其他标志一样组合的原子标志。它们是O_ACCMODE位的互斥替代值。您不使用stat & RDONLY来测试它,而是使用(stat & O_ACCMODE) == O_RDONLY.

相关内容

  • 没有找到相关文章

最新更新