使用 Qt 挂载网络驱动器
Posted
技术标签:
【中文标题】使用 Qt 挂载网络驱动器【英文标题】:mount network drives with Qt 【发布时间】:2015-01-07 15:32:11 【问题描述】:我尝试使用 Qt 在 Linux 中安装网络驱动器 (CIFS)。但它不起作用。是否还有另一种解决方案,没有 QProcess?
QProcess connectSamba;
QString terminalCommand;
terminalCommand = "mount -t cifs //" + ip + "/folder/ " + mountpath;
connectSamba.start(terminalCommand);
【问题讨论】:
【参考方案1】:想知道是否有其他解决方案,我认为您应该检查并理解为什么 QProcess 不适合您。
以这种方式调用QProcess::start 会将第一个令牌(mount)作为命令,并将以下每个项目(以空格分隔)作为参数传递。因此,诸如“//”和“/folder/”之类的标记不是 mount 命令的有效参数。
您可以通过执行以下操作来使用 QProcess:-
QProcess connectSamba;
QString mountPath = "//" + ip + "/folder/ " + mountpath;
QString terminalArgs = QString("-c \"mount -t cifs %1\"").arg(mountPath);
connectSamba.start("/bin/bash", terminalArgs);
connectSamba.waitForFinished();
请注意,终端参数用引号括起来,以确保只传递一个参数,并且我们使用 -c 参数调用 bash 解释器,该参数从正在进行的字符串中获取命令。
【讨论】:
非常感谢。这对我有帮助!但现在我有第二个问题。读取“connectSamba.readAllStandardError()”-function 表示“mount:只有 root 可以使用“--types”选项”。 -.- 由于这是一个不同的问题,请您将其标记为已回答并在 SO 上开始一个新问题;它使其他人更容易搜索相同或相似问题的答案。以上是关于使用 Qt 挂载网络驱动器的主要内容,如果未能解决你的问题,请参考以下文章