Pet*_*esh 37
请参阅答案底部的澄清,了解本答案中使用的推理.
你有什么理由不使用getmntentlibc库调用吗?我确实意识到它与"一体化"系统调用不同,但它应该允许您获取相关信息.
#include <stdio.h>
#include <stdlib.h>
#include <mntent.h>
int main(void)
{
struct mntent *ent;
FILE *aFile;
aFile = setmntent("/proc/mounts", "r");
if (aFile == NULL) {
perror("setmntent");
exit(1);
}
while (NULL != (ent = getmntent(aFile))) {
printf("%s %s\n", ent->mnt_fsname, ent->mnt_dir);
}
endmntent(aFile);
}
Run Code Online (Sandbox Code Playgroud)
考虑到OP澄清有关试图做到这一点,而不具有/proc安装,我要澄清:
除了从linux内核获取已安装文件系统的完全限定列表之外,没有其他工具
/proc可用.没有系统调用,没有ioctl.该/proc接口在商定接口.
话虽如此,如果你没有/proc安装,你将不得不解析/etc/mtab文件 - 传入/etc/mtab而不是/proc/mounts初始setmntent调用.
这是一个商定的协议,mount和unmount 命令将维护文件/ etc/mtab中当前安装的文件系统的列表.这些命令的几乎所有linux/unix/bsd手册页都详细介绍了这一点.所以,如果你没有/proc,你可以排序的靠这个文件的内容.它不能保证是真理的来源,但约定是这些事物的惯例.
因此,如果您没有/proc,您将/etc/mtab在getmntent下面的libc库调用中使用以获取文件系统列表; 否则你可以使用/proc/mounts或之一/proc/self/mountinfo(现在推荐使用/proc/mounts).
没有系统调用来列出此信息;相反,您可以在文件中找到它/etc/mtab
| 归档时间: |
|
| 查看次数: |
15610 次 |
| 最近记录: |