请问不读mtab文件,是不是可以知道一个分区的mount路径?
如题目,请问在一个系统了,如果一个分区已经被mount到一个路径了,我能调用什么函数,或者linux系统动态更新的文件,来得到某个分区的mount路径吗?谢谢了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如题目,请问在一个系统了,如果一个分区已经被mount到一个路径了,我能调用什么函数,或者linux系统动态更新的文件,来得到某个分区的mount路径吗?谢谢了。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
#include <sys/vfs.h>
#include <mntent.h>
#define MTAB_FILE "/etc/mtab"
extern struct mntent *find_mount_point(const char *name, const char *table)
{
struct stat s;
dev_t mountDevice;
FILE *mountTable;
struct mntent *mountEntry;
if (stat(name, &s) != 0)
{
debug(2)("stat %s failedn", name);
return 0;
}
if ((s.st_mode & S_IFMT) == S_IFBLK)
mountDevice = s.st_rdev;
else
mountDevice = s.st_dev;
if ((mountTable = setmntent(table, "r")) == 0)
{
debug(2)("setmntent %s failedn", table);
return 0;
}
while ((mountEntry = getmntent(mountTable)) != 0) {
if (strcmp(name, mountEntry->mnt_dir) == 0
|| strcmp(name, mountEntry->mnt_fsname) == 0) /* String match. */
break;
if (stat(mountEntry->mnt_fsname, &s) == 0 && s.st_rdev == mountDevice)
break;
if (stat(mountEntry->mnt_dir, &s) == 0 && s.st_dev == mountDevice)
break;
}
endmntent(mountTable);
return mountEntry;
}
bool mount_on_same_point(const char *name1, const char *name2)
{
struct mntent *mountEntry;
char *mnt_dev_name1, *mnt_dev_name2;
bool ret=true;
mountEntry = find_mount_point(name1, MTAB_FILE);
if (mountEntry==NULL)
return true;
mnt_dev_name1 = strdup(mountEntry->mnt_fsname);
debug(5)("%s mount on %sn",name1, mnt_dev_name1);
mountEntry = find_mount_point(name2, MTAB_FILE);
if (mountEntry==NULL)
return true;
mnt_dev_name2 = strdup(mountEntry->mnt_fsname);
debug(5)("%s mount on %sn",name2, mnt_dev_name2);
if (strcmp(mnt_dev_name1,mnt_dev_name2)!=0)
ret = false;
free(mnt_dev_name1);
free(mnt_dev_name2);
return ret;
}
是的。 但如果mount指定-n,就不更新mtab.
Refer to `man mount' for more details.
我刚才试了一下,似乎我mount一个分区到一个路径后,或者umount后,mtab文件里也会自动或者删除出现这个mount条目。请问mtab这个文件是不是也会随着mount信息自动更新的啊?
cat /proc/mounts