これはかなり基本的な質問で、簡単な答えがあると確信していますが、答えを探すために使用すべき検索用語がわかりません。ここに行きます:
ビットマスクの仕組みを理解しようとしています。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があるのですか?