我正在尝试使用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
检查挂载点,没有显示任何内容。
我发现相关设备还没有挂载。发生了什么?真的安装成功了吗?如何显示已安装的设备df
Linux 中的命令?
问题是mount()
系统调用,不同于mount
命令,不更新/etc/mtab
文件,同时df
命令解析/etc/mtab
列出安装点。
但是,最新的挂载点列表始终可用/proc/mounts
文件。不像/etc/mtab
, /proc/mounts
不是常规文件,而是内核提供的虚拟文件。
在某些发行版上,/etc/mtab
是一个符号链接/proc/mounts
。如果不是,而你想要df
要工作,您可以执行以下操作:
cat /proc/mounts > /etc/mtab
after every mount()
or umount()
call.
您还可以使/etc/mtab
符号链接到/proc/mounts
或更好/proc/self/mounts
,但这样做需要您自担风险(也许某些应用程序依赖于它,但也许这只是您发行版中的一个错误)。
也可以看看这个问题 https://unix.stackexchange.com/questions/69286/is-it-possible-to-tell-df-to-use-proc-mounts-instead-of-etc-mtab.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)