请请参见答案底部的澄清,以了解此答案中使用的推理。
有什么原因您不会使用libc库呼叫?我确实意识到它与“全部”系统呼叫不同,但是它应该允许您获取相关信息。Clarification
#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); }
考虑到OP澄清了尝试执行此操作的没有安装,我将澄清:
在/proc
中,有no
/proc
接口是在接口上商定的。 当您没有安装的情况下,您将不得不将
/proc
文件解析 - 传递/proc
而不是将commands
/etc/mtab
传递到初始/etc/mtab
呼叫。它是一种协议的协议,即和/proc/mounts
setmntent
将在文件 /etc /mtab
中列出当前已安装的文件系统的列表。这些命令的几乎所有linux
/unix
/BSD
手动页面中都详细介绍了这一点。因此,如果您没有
mount
,则可以依靠此文件的内容。不能保证这是真理的根源,但是惯例是这些事情的惯例。,如果您没有
unmount
,则在下面的libc库中使用
/proc
来获取文件系统列表;否则,您可以使用/proc
或/etc/mtab
(如今建议使用getmntent
)。
没有Syscall列出此信息;相反,您可以在文件/proc/mounts
中找到它