我正在开发一个Linux(Ubuntu)的Qt应用程序,我使用USB驱动器来备份一些内容。 应用程序应该在复制东西后卸载目标驱动器。 我有一个udev
规则文件来挂载USB在特定的位置与ENV{mount_options}="relatime,users,umask=0,uid=user,gid=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 }
有人可以帮我吗? 我使用的是正确的吗?
提前致谢。
需要适当的权限(Linux: CAP_SYS_ADMIN功能)才能卸载文件系统。
每umount
代码是好的。 但是,您需要特权才能卸载设备。
CAP_SYS_ADMIN功能允许进程执行各种管理任务,即:调用mount(),umount()。 这里有两个值得关于功能的文章:
添加到/etc/sudoers
行:
user ALL=NOPASSWD: /bin/umount
user
是用户的名字。
而不是使用umount ...
使用sudo -u user umount ...