类似的命令行安装成功时,C mount功能失败

时间:2014-11-27 03:33:27

标签: c linux filesystems mount nfs

当我尝试通过命令行挂载目录'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

2 个答案:

答案 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