wc
原因を把握してstat
いろいろな情報提供をしようとします/proc/[pid]/cmdline
。
wc
私のシェルcmdline
ファイルサイズが6バイトであるとしましょう。
$ wc --bytes /proc/$$/cmdline
6 /proc/10425/cmdline
stat
ファイルサイズが0バイトであることを示します。
$ stat --format='%s' /proc/$$/cmdline
0
file
同意するstat
:
$ file /proc/$$/cmdline
/proc/10425/cmdline: empty
cat
次の出力を提供します。
$ cat -vE /proc/$$/cmdline
-bash^@
これは他の* nixオペレーティングシステムではなくLinux上で行われます。
stat
プログラムにwc
ファイルのバイト数を計算する他のアルゴリズムはありますか?
ベストアンサー1
以下のファイルは通常の/proc
ファイルではなく、カーネルによって動的に生成された仮想ファイルです。ほとんどの場合(すべて?)システムはサイズを事前に計算しませんが、それを読み取るプログラムは目的のデータを取得します。
wc
あなたがしたことと、例えば何をするのかというstat
違いは、ls
ここwc
でファイルを開いて読んで何を得るかを計算し、システムコールを使用してstat
サイズを含むファイルのメタデータを要求することです(たとえば、すべてをインポートすることもできます)。 。所有者と権限)。仮想ファイルについても同じ結果は得られません。ls
stat()
egを実行すると、ls -l /proc/$$/
ほとんどのファイルからデータを読み取ることができますが、サイズが0のファイルがたくさん表示されます。
デバイスノード/dev/sda
は似ていますが、その場合はls
サイズさえ表示されず、デバイス番号のみが表示されます。
特にfile
、file -s
データのみ読み込み特殊ファイルかどうかは気にしないように要求できます。