我是Unix编程和C的初学者,我对stat struc
及其字段st_mode
有两个问题:
如下所示访问st_mode
字段时,返回的是哪种类型的数字(八进制,十进制等)?
struct stat file;
stat( someFilePath, &file);
printf("%d", file.st_mode );
我认为数字是八进制的,但是当我运行此代码时,我得到了值33188
。什么是基础?
st_mode
编码一个16位二进制数,表示文件类型和文件权限。如何从上面的输出中获取16位数字(特别是当它看起来不是八进制时)。 16位数字的哪些部分编码哪些信息?感谢您的帮助。
答案 0 :(得分:1)
mode_t背后的实际类型及其对信息的编码方式是实现定义的。唯一可以肯定的是它是一个位掩码。
要使用st_mode,请使用sys / stat.h标头中定义的标志和宏。有关这些定义的列表,请参阅:
man 2 stat
如果你真的需要知道每个位代表什么,或者只是好奇,请阅读标题或使用printf检查标志。