【Linux】プログラム内でファイルシステムのマウント情報を取得する

Linux シェルは、/etc/mtab または /proc/mounts ファイルを表示することで、現在のファイル システムのマウント情報を取得できます。次に例を示します。

プログラム内で /etc/mtab または /proc/mounts を読み取ったり、文字列を解析したりするのは面倒ですが、mntent が提供する便利な関数を使用できます。

FILE *setmntent(const char *ファイル名, const char *タイプ);
struct mntent *getmntent(FILE *filep);
int endmntent(FILE *filep);



(1) setmntent は、/etc/mtab または同じ形式のテーブル ファイルを開くために使用されます。Read
成功すると FILE ポインター (mntent 操作用) を返し、失敗すると NULL を返します
 
(2) getmntent は、読み取りに使用されますファイルの各行を解析し、各行のパラメータを mntent 構造体に解析します。mntent 構造体の記憶領域は静的に割り当てられ (free は必要ありません)、構造体の値は次の getmntent で上書きされます。

mntent 構造定義:

struct mntent
{ char *mnt_fsname;  char *mnt_dir;     char *mnt_type;    char *mnt_opts;    int mnt_freq;      int mnt_passno;    };







パラメータ filep は setmntent によって返される FILE ポインタです。
成功すると mntent へのポインタが返され、失敗すると NULL が返されます。
 
(3) endmntent は開かれたテーブル ファイルを閉じるために使用され、常に 1 を返します。

サンプルプログラム:

#インクルード
#インクルード
#
インクルード #インクルード

int main(void)
{ char *filename ="/proc/mounts"; ファイル *mntfile; 構造体 mntent *mntent; mntfile = setmntent(ファイル名,"r"); if (!mntfile) { printf("mtab ファイルの読み取りに失敗しました。エラー [%s]\n", strerror(errno)); -1 を返します。



  





while(mntent = getmntent(mntfile))
printf("%s, %s, %s, %s\n",
mntent->mnt_dir,
mntent->mnt_fsname, mntent-
>mnt_type,
mntent->mnt_opts);
 
endmntent(mntfile);
0を返します。

おすすめ

転載: blog.csdn.net/Vincent20111024/article/details/131005616