stat系统调用的st_mode的标志

Chr*_*ner 7 c unix filesystems stat

我正在尝试理解该stat命令的stat结构的st_mode字段的标志,但是我有这么难的时间!我在这里找到了这个例子,但我真的不明白这个代码片段:

if ( mode & S_IRUSR ) str[1] = 'r';    /* 3 bits for user  */
if ( mode & S_IWUSR ) str[2] = 'w';
if ( mode & S_IXUSR ) str[3] = 'x';

if ( mode & S_IRGRP ) str[4] = 'r';    /* 3 bits for group */
if ( mode & S_IWGRP ) str[5] = 'w';
if ( mode & S_IXGRP ) str[6] = 'x';

if ( mode & S_IROTH ) str[7] = 'r';    /* 3 bits for other */
if ( mode & S_IWOTH ) str[8] = 'w';
if ( mode & S_IXOTH ) str[9] = 'x';
Run Code Online (Sandbox Code Playgroud)

我知道"&"是按位AND运算符,但没有别的.我甚至不知道该问什么.

PD:对我之前提出的问题感到抱歉.我不知道如何标记回答的问题或类似的东西:(

rib*_*ram 4

mode 是一个位域,是打包数据的常用方式。将字段中的每一位视为一个可以设置为关闭或打开的切换开关。要检查切换是否已打开,请检查是否已使用 & 运算符设置了适当的位。您可以使用 | 设置位 并使用〜按位运算清除它们。