C/C++ プログラムで、ユーザーが指定したデータ ディレクトリが NFS ファイル システム上にあるかどうかを確認したいと考えています。リモート NFS ディレクトリでは、データ処理のレイテンシ / 帯域幅が悪化するため、チェックが必要です。データ ディレクトリが NFS の場合に備えて、ユーザーに警告を発行したいと思います。
どうやってやるの?私を助けることができるはずの stat() 呼び出しがあると考えましたが、詳細は明確ではありません。
私はLinuxを使用しています。
を使用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 */
}
私はそれを行うことの有用性についてバジルに同意します。
statfs syscallを使用して、(そのファイルシステム内のあるファイルの)特定のパスのファイルシステムに関する情報を取得できます。
ユーザーに警告することが役立つかどうかはわかりません。カーネルはいくつかのファイルキャッシングを実行しており、一部のリモートファイルシステムは一部のローカルファイルシステムよりも高速である可能性があります(低速のUSBスティックやCDROMなど)。
お探しのシステムコールはですstatfs
。パスを指定すると、使用しているファイルシステムなど、パスが存在するファイルシステムに関する情報が表示されます。