QT umount()函数不起作用

时间:2017-11-09 06:30:13

标签: linux qt raspberry-pi

当我写下这段代码时;

int removeUSB = umount("/media/pi/USB_Device");
if(!removeUSB) 
   qDebug()<<"USB is removed."; 
else 
   qDebug()<<"USB is not removed."

USB无法移除。我正在服用&#34; USB未被删除&#34;调试屏幕中的消息。 我错过了什么?谢谢你的所有答案。

1 个答案:

答案 0 :(得分:0)

我相信你调用的umount函数不是QT函数,它是由glibc库提供的函数。请参阅:umount(2)手册页和glibc documentation for mount/umount

这两个页​​面都说如果unmount调用不成功,则返回-1并将全局变量errno设置为错误代码。错误代码可以在errno手册页中找到。

您可以看到错误如下:

if(umount("/media/pi/USB_Device")) 
   qDebug()<<"Error removing USB Deviced: " << strerror(errno); 
else 
   qDebug()<<"USB is removed."

strerror函数将错误代码转换为人类可读的字符串。

无法卸载设备的可能原因包括:

  • 您的进程或其他进程可能会打开设备中的文件,在这种情况下,返回的errno将为EBUSY。命令lsof对于确定哪个进程保持文件系统忙碌非常有用。

  • 正在运行该进程的用户可能没有所需的权限,在这种情况下,错误代码将是EPERM。