【问题标题】:C mount function fails while similar command line mount succeedsC 挂载功能失败,而类似的命令行挂载成功
【发布时间】:2015-01-25 13:51:53
【问题描述】:

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

【问题讨论】:

标签: c linux filesystems mount nfs


【解决方案1】:

应该是:

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 和"" 不同。 "" 只是表示空字符串。空字符串不为 NULL。

另外,检查 /proc/filesystems 中的有效文件系统类型参数值

【讨论】:

  • 我同意,并且已经尝试过了,但不幸的是,这也不起作用。
  • 运行此命令以获取系统上的有效文件系统参数 $ cat /proc/filesystems
【解决方案2】:

如果您在该mount 命令上运行strace(没有选项),您将看到它运行:

mount("remote_server_ip:/", "local_dir", "nfs4", MS_MGC_VAL, NULL)

所以如果你不想传递任何选项,mount 的第五个参数应该是NULL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 2015-07-05
    相关资源
    最近更新 更多