标准Linux libs中有一个函数(或接口; IOCTL,NetLink等),它将直接从内核返回当前安装座而无需解析 /proc?

问题描述 投票:0回答:1

请请参见答案底部的澄清,以了解此答案中使用的推理。

有什么原因您不会使用

c linux mount libc
1个回答
46
投票
libc库呼叫?我确实意识到它与“全部”系统呼叫不同,但是它应该允许您获取相关信息。

#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); }

Clarification

考虑到OP澄清了尝试执行此操作的没有安装,我将澄清:


/proc
中,有
no

设施从Linux内核中获取了完全合格的固定文件系统列表。没有系统调用,没有IOCTL。

/proc

接口是在接口上商定的。 当您没有安装的情况下,您将不得不将

/proc
文件解析 - 传递

/proc
而不是将

/etc/mtab传递到初始/etc/mtab

呼叫。
它是一种协议的协议,即
/proc/mounts

setmntent
commands

将在文件 /etc /mtab

中列出当前已安装的文件系统的列表。这些命令的几乎所有
linux
/
unix
/
BSD
手动页面中都详细介绍了这一点。因此,如果您没有
mount
,则可以依靠此文件的内容。不能保证这是真理的根源,但是惯例是这些事情的惯例。
,如果您没有

unmount

,则在下面的libc库中使用

/proc
来获取文件系统列表;否则,您可以使用
/proc
/etc/mtab(如今建议使用getmntent)。 没有Syscall列出此信息;相反,您可以在文件/proc/mounts中找到它
	
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.