繁体   English   中英

fileStat.st_mode & S_IRUSR 中 & 是什么意思

[英]What does & mean in fileStat.st_mode & S_IRUSR

我正在尝试使用C stat函数调用打印Linux中文件的权限。 我在网上找到了一些有用的代码,其中包含这些段

printf( (fileStat.st_mode & S_IRUSR) ? "r" : "-");
printf( (fileStat.st_mode & S_IWUSR) ? "w" : "-");

代码运行完美,但谁能解释一下&在这里是什么意思?

第一行

printf( (fileStat.st_mode & S_IRUSR) ? "r" : "-");

如果有读取权限(S_IRUSR),则打印r否则打印-

为了防止格式字符串攻击( https://en.wikipedia.org/wiki/Uncontrolled_format_string ),您应该编写:

printf("%c", (fileStat.st_mode & S_IRUSR) ? 'r' : '-');

第二行

printf( (fileStat.st_mode & S_IWUSR) ? "w" : "-");

如果有写权限(S_IWUSR),则打印w否则打印- 同样,为了防止格式字符串攻击,您应该编写:

printf( "%c", (fileStat.st_mode & S_IWUSR) ? 'w' : '-');

&是按位和运算符。 在这种情况下,它用于检查是否设置了位域。 一个变量x可以被设置为,比如说, A | B | C A | B | C A | B | C 要检查C位是否打开,请写入

if (x & C)
    // the bit has been set

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM