我尝试在我的程序中使用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));
}
命令显示已安装的设备?
答案 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
,但这样做会自行承担风险(可能某些应用程序依赖它,但可能只是一个错误)你的发行版。)