我正在处理一项网络任务,我们的任务是使用给定的协议创建远程文件访问服务器。我的困难在于缺乏信息,我可以找到这些信息来解释在 open() 中为 oflag 参数计算位的过程。
我收到来自客户端的消息以打开文件,并在消息中解析要在 oflag 中使用的标志的字符。具体来说,它们是:
我在谷歌周围搜索了按位运算、枚举标志、位标志、计算位标志等,但找不到对弄清楚如何为 oflag 创建位有用的东西。也许我只是不知道我在寻找什么而忽略了有用的信息?
有人可以请:
非常感谢您的帮助,如果我不清楚我的问题或我要做什么,请告诉我,我会尽快澄清。
小智 5
该O_...标志是每一个不同的单个位组数字。例如在我的系统中,它们被定义fcntl.h为
#define O_RDONLY 00
#define O_WRONLY 01
#define O_RDWR 02
#define O_CREAT 0100 /* not fcntl */
#define O_EXCL 0200 /* not fcntl */
#define O_NOCTTY 0400 /* not fcntl */
#define O_TRUNC 01000 /* not fcntl */
#define O_APPEND 02000
Run Code Online (Sandbox Code Playgroud)
您使用|(逻辑或)来组合标志并将单个数字传递给open为您想要的每个选项设置的所有位。所以例如open("file", O_RDWR | O_CREAT)。
如果需要,您也可以计算一个 int 并将其传递给 open 。
int flags = 0;
if (...)
flags |= O_RDWR;
...
open('file', flags);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3153 次 |
| 最近记录: |