【发布时间】:2015-01-20 19:31:50
【问题描述】:
我想使用 c++ 在 linux 上挂载一个网络驱动器。使用 "mount" 的命令行,我可以安装任何我想要的驱动器。但是使用C++,只有那些被用户共享的驱动器才能挂载成功。
这是我的测试代码:
#include <sys/mount.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <string>
using namespace std;
int main()
{
string src = "//192.168.4.11/c$/Users";
string dst = "/home/krahul/Desktop/test_mount";
string fstype = "cifs";
printf("src: %s\n", src.c_str());
if( -1 == mount(src.c_str(), dst.c_str(), fstype.c_str(), MS_MGC_VAL | MS_SILENT , "username=uname,password=pswd") )
{
printf("mount failed with error: %s\n",strerror(errno));
}
else
printf("mount success!\n");
if( umount2(dst.c_str(), MNT_FORCE) < 0 )
{
printf("unmount failed with error: %s\n",strerror(errno));
}
else
printf("unmount success!\n");
return 0;
}
我想挂载机器的“C:/Users”驱动器。使用命令行,它可以工作,但不能通过这段代码。我不知道为什么。 strerror() 打印的错误是“没有这样的设备或地址”。我正在使用 Centos,并且为这台机器配置了 Samba。我哪里错了?
【问题讨论】:
-
C 不是 C++,请解决您的问题。然后,为了将来,请在发布之前一致地缩进您的代码并删除不必要的部分。顺便说一句:您还可以查看 mount 程序的来源。
-
你在shell中使用哪个命令来挂载你的网盘?我想可能
string src = "//192.168.4.11/c$/Users";有问题 -
我使用下面的shell命令“mount //192.168.4.11/c$/Users /mnt/test_mount -o username=uname,password=pswd”,效果很好。