私はちょうどそれが基本的には次の情報が格納されていることmode_tについて読んだ:ファイルタイプのなぜmode_tは4バイトを使用しますか?
- 7ブール値(S_IFREG、S_IFDIR、S_IFCHR、S_ISBLK、S_ISFIFO、S_ISLINK、S_ISSOCK)
- 3 * 3 = 9アクセス許可のブール値(所有者、グループおよび他の人のための読み込み、書き込み、実行)
したがって、16ビット= 2バイトが必要です。普通のファイル、ディレクトリ、文字またはブロックデバイス、ソケット、シンボリックリンク、またはパイプのいずれかでなければならないので、ファイルタイプのビット数を1ビット少なくすることもできます。それとも他のファイルタイプが存在するのですか?
だから、僕はそれは4バイトを使用しています
printf("Size: %d byte\n", sizeof(mode_t));
でmode_tのサイズをチェックしました。なぜ4バイトを使用していますか?私が気付かなかった追加の情報はありますか?
編集:
type mode_t = cuint32;
cuint32 32ビットは大きさで、符号なし整数とctypes.incで定義された:
type cuint32 = LongWord;
私はmode_tがptypes.incに定義されていることを見つけた
これはおそらく答えに役立ちます。
将来追加オプション/フラグなどを追加する必要がある場合はどうすればよいですか? – Nim
ほとんどのアーキテクチャでは32ビットである 'int'から単純にtypedefされている可能性があります。それは将来の旗に合うように大きくなっています。 –
** int ** type _may_に「255」という数字を格納しても4バイトになる可能性があります... 「ビルディングブロック」はプロセッサアーキテクチャであり、さらに他のフラグのための空き領域があります必要。 OMG私はbitflagsが嫌い! –