linux - 我在看一些C的函数中,这些按位或是什么意思呢?

浏览:29日期:2023-03-19

问题描述

小弟最近在学C,看到一些函数的传参 是用按位或传参的 不太明白到底是啥意思,而且 关于位运算 好像平时工作中也很少用到。

比如说下面的一段代码

#define LOCKFILE '/var/run/gwyydaemon.pid'#define LOCKMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH) fd = open(LOCKFILE,O_RDWR|O_CREAT,LOCKMODE);

这里面的 O_RDWR|O_CREAT 还有 S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH 是什么意思呢

问题解答

回答1:

这个需要自己去查文档

O_RDWR: 可读可写

O_CREAT : 文件不存在则创建

位或的意思是组合配置,假设(具体值我并不知道):O_RDWR 等于二进制 00000001O_CREAT 等于二进制 00000010

那么组合出来的配置就是

00000001 可读写00000010 创建-------- 位或00000011 可读写+创建回答2:

就是位运算啊S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH 等等应该在某头文件中定义了比如 (值是我随便写的,具体请查看那个头文件,我偷个懒)

#define S_IROTH 0x01#define S_IRGRP 0x02#define S_IWUSR 0x04#define S_IRUSR 0x08

等。

相关文章: