当我写下这段代码时;
int removeUSB = umount("/media/pi/USB_Device");
if(!removeUSB)
qDebug()<<"USB is removed.";
else
qDebug()<<"USB is not removed."
USB无法移除。我正在服用&#34; USB未被删除&#34;调试屏幕中的消息。 我错过了什么?谢谢你的所有答案。
答案 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。