gpt4 book ai didi

c - fileStat.st_mode 和 S_IRUSR 中 & 的含义是什么

转载 作者:行者123 更新时间:2023-11-30 20:24:20 28 4
gpt4 key购买 nike

我正在尝试使用 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 |乙| C。要检查 C 位是否已打开,请写入

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

关于c - fileStat.st_mode 和 S_IRUSR 中 & 的含义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33814292/

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