GNU/Linux >> Linux の 問題 >  >> Linux

statvfs() と statfs() システムコールの違いは?

statfs() statvfs() を支持して非推奨です 、これはかなりお得です 大きなファイルのサポートでより良い。 statfs() unsigned long の値を超えるサイズに対して奇妙なことをすることが知られています.

私が知る限り(そして覚えている限り)、statvfs() Redhat 7.3 以降、POSIX の代替として導入された直後です。 (ほとんどの) 最新のシステムで見つかる可能性があります。


エラー、「歴史的理由」です。

もともと 4.4BSD は statfs() を定義していました 電話。 Linux は後に、同じ名前でわずかに異なる呼び出しを実装しました。 Posix は、statvfs() を定義することで、すべての freenix と Unix のバージョン間で標準化しました。 .

statfs() OS固有です

statvfs() posix準拠です

それらはすべてわずかに異なる構造を返すため、後で登場するものは最初のものを置き換えることはできません.

一般的には statvfs() を使用する必要があります 、Posix のもの。ただし、「Posix を使用する」というアドバイスには注意してください。場合によっては (pty など)、実際には BSD (またはその他のもの) の方が移植性が高くなります。


ファイルシステムの容量と使用状況の情報だけが必要な場合は、他の答えが正しいです:prefer statvfs これは標準の POSIX であり、大きなファイル サイズをより適切に処理できるためです。 statfs は BSD および Linux 固有であり、それぞれに異なる構造があります。 (Linux 2.6 では新しい statfs64 が追加されました と fstatfs64 より大きなサイズを処理するために拡張構造を使用するシステム コール。) ただし、statfs Linux でファイル システム タイプを判別するのに引き続き役立ちます (Linux 固有のコードを書くことに問題がないと仮定して)


Linux
  1. 2>&-、2> / dev / null、|&、&> / dev/nullと>/dev / null 2>&1の違いは?

  2. Sudo Su –とSudo Su —の違いは何ですか?

  3. GtkとQtアプリケーションの違いは?

  1. ログインシェルと非ログインシェルの違いは?

  2. $HOME と '~' (チルダ) の違いは?

  3. Linux でのライブラリ呼び出しとシステム呼び出しの違いは何ですか?

  1. 停止コマンドとシャットダウンコマンドの違いは?

  2. [[$ a ==Z*]]と[$a==Z *]の違いは?

  3. EotとEofの違いは?