这是一个非常基本的问题,我确信有一个简单的答案,但我不知道我应该使用哪个搜索词来寻找答案。它是这样的:
我试图了解位掩码是如何工作的。在 Linux 系统上有:
struct stat
它有一个 st_mode 成员,用于确定被检查的文件是否是常规文件、目录、符号链接等。因此,可以编写一个简单的函数,您可以将名称传递给并获取该名称是否代表目录:
16 int isadir( char *name )
17 /*
18 * calls stat, then masks the st_mode word to obtain the
19 * filetype portion and sees if that bit pattern is the
20 * pattern for a directory
21 */
22 {
23 struct stat info;
24
25 return ( stat(name,&info)!=-1 && (info.st_mode & S_IFMT) == S_IFDIR );
26 }
当我查看位掩码时,我看到它表示如下:
/* Encoding of the file mode. */
#define __S_IFMT 0170000 /* These bits determine file type. */
我认为位掩码只能有 0 和 1。为什么面具上有一个7?