2017-10-14 4 views
0

に等しく、常に1に等しく、path_stat.st_modeは常に16877.のstat st_modeのは、私はファイルがディレクトリかのstatを持つ通常のファイルであるかどうかを知りたい、常に16877

+0

戻り値が '1'の場合、通常のファイルです。値「16877」は、ファイル許可ビットとファイルモードビット(およびその他のいくつかのもの)の組み合わせです。I.E.それはビットマップであり、マクロ 'S_ISREG'はそのstatフィールドから単純に1ビットを抽出しています。 'stat'の' man'ファイルを読むことを提案してください。 – user3629249

答えて

2

16877に等しいこと(ユーザーが完全な権利を持って、誰もが読んで、トラバーサル権ました)権限755とディレクトリ(8進数40000)を示しており、進40755です。推奨されるように、statchmodのマニュアルページが便利です。

ただ、たとえば、ここに私のdirectory-editor示す進モード(オプション)ではなく、通常のシンボルのものとスクリーンショットです:

ded showing octal permissions

1

path_stat.st_mode常に16877

に等しく、

st_modeの値は、ビットによって解釈される必要があります。

低い12ビットは、chmodで設定できるファイルアクセス許可です。各ビットは1つのファイル許可を表します。上位4ビットはファイルタイプです。

16ビット番号16877の下位12ビットは、000111101101となります。この組み合わせは、

---rwxr-xr-x(ファイルの所有者は読み取り、書き込み、実行、他のユーザーは読み取りと実行)を意味します。この組み合わせは、ディレクトリと実行可能ファイルの典型的な組み合わせです。

数字16877の上位4ビットは4です(少なくともLinuxでは意味します): "ディレクトリ"。 「ファイルタイプが通常ファイルである」:

S_ISREG(path_stat.st_mode)する...

S_ISREGマクロ単に引数の上位4ビットが意味する値を持っているかどうかをチェック常に等しいです

は...いつもこれが私を少し混乱

1に等しいです: 16877はディレクトリでなければなりません。 S_ISREGは通常ファイルの場合は1、ディレクトリなどのその他の場合は0を返します。

関連する問題