当我尝试通过命令行挂载目录'test_mount'时,操作成功:
mount -t nfs4 remote_server_ip:/ local_dir
但无法以编程方式挂载相同的目录:
int ret_val = mount("remote_server_ip:/", "local_dir", "nfs4", MS_SYNCHRONOUS, "");
if (ret_val < 0) {
perror("Mount failed");
return 1;
}
此C函数失败并显示Mount failed: Invalid argument
。如何以编程方式安装目标目录?我正以超级用户权限运行可执行文件。
平台:
Linux ip-10-1-19-46 3.10.42-52.145.amzn1.x86_64 #1 SMP Tue Jun 10 23:46:43 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
答案 0 :(得分:2)
应该是:
int ret_val = mount("remote_server_ip:/", "local_dir", "nfs4", MS_SYNCHRONOUS, NULL);
而不是:
int ret_val = mount("remote_server_ip:/", "local_dir", "nfs4", MS_SYNCHRONOUS, "");
NULL和&#34;&#34;是不同的。 &#34;&#34;只是意味着空字符串。空字符串不是NULL。
另外,检查/ proc / filesystems
中的有效filesystemtype参数值答案 1 :(得分:1)
如果您在strace
命令上运行mount
(没有选项),您将看到它运行:
mount("remote_server_ip:/", "local_dir", "nfs4", MS_MGC_VAL, NULL)
如果您不想传递任何选项,mount
的第五个参数应为NULL
。