gpt4 book ai didi

linux - 如何使用 statvfs 查找磁盘名称?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:21 24 4
gpt4 key购买 nike

我正在使用 statvfs收集有关特定文件的信息。我也想获取磁盘名称/分区(如 /dev/sdb1/dev/media 等)。但是 statvfs 结构似乎不提供此类数据。我在哪里可以找到它?

最佳答案

使用 getmntent() :

SYNOPSIS

   #include <stdio.h>
#include <mntent.h>

FILE *setmntent(const char *filename, const char *type);

struct mntent *getmntent(FILE *stream);

int addmntent(FILE *stream, const struct mntent *mnt);

int endmntent(FILE *streamp);

char *hasmntopt(const struct mntent *mnt, const char *opt);

...

DESCRIPTION

...

The mntent structure is defined in as follows:

struct mntent {
char *mnt_fsname; /* name of mounted filesystem */
char *mnt_dir; /* filesystem path prefix */
char *mnt_type; /* mount type (see mntent.h) */
char *mnt_opts; /* mount options (see mntent.h) */
int mnt_freq; /* dump frequency in days */
int mnt_passno; /* pass number on parallel fsck */
};

例如:

FILE *fp = setmntent( "/etc/mtab", "r" );
for ( ;; )
{
struct mntent *me = getmntent( fp );
if ( NULL == me )
{
break;
}

...
}

endmntent( fp );

给定一个文件名,您必须进行一些编码以使文件名与文件系统挂载点相匹配。最简单的方法可能是匹配 f_fsid来自 struct statvfs 的字段从文件到 f_fsid通过调用 statvfs() 获得的挂载文件系统在文件系统的挂载点上 struct mntentgetmntent() 返回.

关于linux - 如何使用 statvfs 查找磁盘名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43515050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com