5

C/C++ プログラムで、ユーザーが指定したデータ ディレクトリが NFS ファイル システム上にあるかどうかを確認したいと考えています。リモート NFS ディレクトリでは、データ処理のレイテンシ / 帯域幅が悪化するため、チェックが必要です。データ ディレクトリが NFS の場合に備えて、ユーザーに警告を発行したいと思います。

どうやってやるの?私を助けることができるはずの stat() 呼び出しがあると考えましたが、詳細は明確ではありません。

私はLinuxを使用しています。

4

3 に答える 3

7

を使用statfs(2)して確認する必要がありますf_type

#include <sys/statfs.h>

struct statfs foo;
if (statfs ("/foo/bar", &foo)) {
    /* error handling */
}

if (foo.f_type == NFS_SUPER_MAGIC) {
    /* nfs warning */
}

私はそれを行うことの有用性についてバジルに同意します。

于 2012-07-28T08:35:58.677 に答える
4

statfs syscallを使用して、(そのファイルシステム内のあるファイルの)特定のパスのファイルシステムに関する情報を取得できます。

ユーザーに警告することが役立つかどうかはわかりません。カーネルはいくつかのファイルキャッシングを実行しており、一部のリモートファイルシステムは一部のローカルファイルシステムよりも高速である可能性があります(低速のUSBスティックやCDROMなど)。

于 2012-07-28T08:34:02.833 に答える
3

お探しのシステムコールはですstatfs。パスを指定すると、使用しているファイルシステムなど、パスが存在するファイルシステムに関する情報が表示されます。

于 2012-07-28T08:33:23.410 に答える