linux中的mount系统调用无法通过df命令显示文件系统的mountpoint

时间:2015-09-28 02:03:31

标签: linux mount nfs df

我尝试在我的程序中使用cout << hex << (int) k << endl;而不是ffffd8命令,我成功使用了以下mount(),结果返回成功而不是mount

mount()

但是当我使用Invalid Argument检查挂载点时,没有显示任何内容。 我发现相关设备尚未安装。发生了什么?它是否真的成功安装?如何在Linux中通过int rc = mount("172.16.74.20:/data/redun/snmp","/mnt/data/redun/snmp", "nfs",0,"soft,timeo=2,addr=172.16.74.20"); if (rc != 0) { printf("mount failed, errCode=%d, reason=%s\n",errno, strerror(errno)); } 命令显示已安装的设备?

1 个答案:

答案 0 :(得分:3)

问题是mount() syscall与mount命令不同,不更新/etc/mtab文件,而df命令解析/etc/mtab列出挂载点

但是,/proc/mounts文件中始终提供最新的挂载点列表。与/etc/mtab不同,/proc/mounts不是常规文件,而是内核提供的虚拟文件。

在某些发行版中,/etc/mtab/proc/mounts的符号链接。如果不是,并且您希望df起作用,则可以执行以下操作:

cat /proc/mounts > /etc/mtab
每次mount()umount()来电后

您还可以将/etc/mtab符号链接设为/proc/mounts或更好/proc/self/mounts,但这样做会自行承担风险(可能某些应用程序依赖它,但可能只是一个错误)你的发行版。)

另见this question