我想在我的程序中使用mount()
而不是mount
命令,我成功地使用了下面的mount()
,结果返回成功而不是Invalid Argument
。
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)); }
但是当我使用df -h
来检查挂载点时,没有任何显示。 我发现相关设备尚未安装。 发生了什么? 它真的挂载成功吗? 如何在Linux中使用df
命令显示挂载的设备?
问题是,与mount
命令不同, 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
的符号链接,但是你自己承担风险(也许有些应用程序依赖于它,但也许这只是你的发行版中的一个bug)。
另见这个问题 。