用C ++卸载USB驱动器

时间:2013-05-21 13:34:37

标签: c++ linux qt ubuntu

我正在为Linux(Ubuntu)开发一个Qt应用程序,我在其中使用USB驱动器备份一些内容。应用程序应在复制内容后卸载目标驱动器。我有一个udev规则文件,用于在ENV{mount_options}="relatime,users,umask=0,uid=user,gid=user"的特定位置安装USB,其中user代表我的用户名。

我没试过就试过这个。

const char* usb = "/mnt/mountpoint/usbdrive";
if (!umount(usb))
{
  qDebug() << "Device unmounted";
}
else
{
  qDebug() << "Can't unmount" << strerror(errno); //this prints Operation not permitted
}

有人可以帮我吗?我正在使用umount吗?

提前致谢。

2 个答案:

答案 0 :(得分:10)

  

适当的权限(Linux:CAP_SYS_ADMIN能力)是   需要卸载文件系统。

umount代码没问题。但是,您需要特权才能卸载设备。

CAP_SYS_ADMIN功能允许进程执行各种管理任务,即:调用mount(),umount()。这里有两篇关于功能的文章:

答案 1 :(得分:0)

添加到/etc/sudoers行:

user ALL=NOPASSWD: /bin/umount

其中user是您的用户名。

而不是使用umount ...使用sudo -u user umount ...