以下哪个答案相当于 Ubuntu 14.04 LTS 上的 O_RDWR?

pac*_*oze 2 c c++ unix linux

我得到了以下复选框的列表,其中包含在 Ubuntu 14.04 LTS 上选择与 O_RDWR 等效的所有真实答案的问题的所有可能解决方案。根据下面的列表

O_RDONLY

1

2

3

1 << 1

3 & 2

3 | 2

O_WRONLY

(O_RDONLY + O_WRONLY)

(O_RDONLY | O_WRONLY)

(O_RDONLY 和 O_WRONLY)

(O_RDONLY && O_WRONLY)

(O_RDONLY << 1)

(O_WRONLY << 1)

0

我选择了 2 和 (O_RDONLY | O_WRONLY) 但仍然收到错误

谁能帮我解决这个问题?

小智 5

研究按位运算符。

O_RDWR is defined in fcntl.h and is equals to 2.
O_WRONLY = 1
O_RDONLY = 0

1 = 1
2 = 2
3 = 3
1 << 1 = 2
3 & 2 = 2
3 | 2 = 3
O_WRONLY = 1
(O_RDONLY + O_WRONLY) = 1
(O_RDONLY | O_WRONLY) = 1
(O_RDONLY & O_WRONLY) = 0
(O_RDONLY && O_WRONLY) = 0
(O_RDONLY << 1) = 1
(O_WRONLY << 1) = 2
0 = 0
Run Code Online (Sandbox Code Playgroud)

  • 为什么不添加“114598715 - 114598713”?或者“sqrt(4)”?这个答案是***错误***。根据 [Linux `open(2)` 手册页](https://man7.org/linux/man-pages/man2/open.2.html):“文件访问模式与可以在标志,访问模式值“O_RDONLY”、“O_WRONLY”和“O_RDWR”不指定各个位。...” (2认同)