gpt4 book ai didi

c - 如何理解 O_RDONLY = 0?

转载 作者:行者123 更新时间:2023-12-03 21:54:38 34 4
gpt4 key购买 nike

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

#include <stdio.h>
#include "fcntl.h"

int main() {
const int flag = O_RDONLY;
printf( "*** Flag O_RDONLY = %5d\n", flag);
return 0;
}

产生这个输出
*** Flag O_RDONLY =     0

这完全符合
#define O_RDONLY         00

来自 fcntl-linux.h .

如何将零值用作标志?

我希望“原子”标志是 2^n ( n>=1 )和“复合”标志(如 O_ACCMODE )只是几个原子标志的总和(这与按位或这些原子标志相同)。
据我了解,我无法“检测”任何东西,也无法设置此类标志。
一个按位与运算的表达式,如 (stat & O_RDONLY)永远是假的。

有关的:

How to get the mode of a file descriptor? (我问过这个)

最佳答案

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

关于c - 如何理解 O_RDONLY = 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61923703/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com