web-dev-qa-db-ja.com

lstat fstatとCのstatの違い

ファイルシステムを検索してディレクトリ、通常のファイル、シンボリックリンクを検索するために、Cで学校の課題を書いています。今のところ、lstatを使用してアイテムに関する情報を取得します。

では、lstatfstatstatシステムコールの違いは何ですか?

22
uzr

私は_stat vs lstat vs fstat_も検索していましたが、この質問に対する回答はすでにありますが、次のような形式にしたいのですが。

lstat()stat()と同じですが、pathnameがシンボリックリンクの場合、参照するファイルではなく、リンク自体に関する情報を返します。

fstat()は、情報が取得されるファイルがファイル記述子fdによって指定されることを除いて、stat()と同じです。

http://man7.org/linux/man-pages/man2/stat.2.html

62
user619271

類似性:どちらも引数としてファイル名を取ります。

相違点:ファイル名がシンボリックリンクである場合は常に、stat()はリンクに関連付けられているターゲットファイルに関する属性またはiノード情報を返します。一方、lstat()はリンクのみの属性を返します。

Stat()とlstat()のマンページを参照してください。

2
bharat nc

次のグーグル:lstat v fstat v stat

提供される最初のリンクは、これらの違いを説明するmanページです: http://manpages.ubuntu.com/manpages/hardy/man2/stat.2.html

ページにリストされているのは、次の簡単な答えです。stat()は、パスが指すファイルを統計し、bufに入力します。 lstat()はstat()と同じですが、pathがシンボリックリンクの場合、参照するファイルではなく、リンク自体が統計されます。 fstat()はstat()と同じですが、統計されるファイルがファイル記述子fdによって指定される点が異なります。

1
Bryan S.