gpt4 book ai didi

仅检查 O_RDONLY 标志以打开 (2)

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:56 26 4
gpt4 key购买 nike

我正在根据我在某些元文件中设置的权限检查发送到 open(2) 调用的标志。这里的 perms 与通常发送给 chmod 等调用的八进制值有关。我希望在 perms 与相关标志不匹配时输入 if block 。

if((perms == 4 && !(flags & O_RDONLY)) ||
(perms == 2 && !(flags & O_WRONLY)) ||
(perms == 6 && !(flags & O_RDWR)))

我希望它能工作,并且它在 O_WRONLY 和 O_RDWR 中运行良好。但是,O_RDONLY 的实际值为 0,因此 & 运算符将为每个值返回 false。不幸的是,删除否定将导致每个 perms 值 4 跳过 if block 的不良行为。我怎样才能在这里实现我的目标?

最佳答案

最初,open 的第二个参数被称为 mode 并记录为 0、1 或 2。Later on ,该参数被重命名为 oflag,它现在可以包含除访问模式之外的标志。不过,模式的可能值保持不变,并为它们指定了符号名称,注意与标志不同的是,只有 O_RDONLYO_WRONLY、并且可以使用 O_RDWRPOSIX standard包括以下定义:

Mask for use with file access modes is as follows:
O_ACCMODE Mask for file access modes.

所以你可以使用((flags&O_ACCMODE) == O_RDONLY)等代码

关于仅检查 O_RDONLY 标志以打开 (2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37891184/

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