【问题标题】:Copying Text File to USB Stick将文本文件复制到 U 盘
【发布时间】:2018-04-19 20:22:00
【问题描述】:

当我在 Raspberry Pi 3 中使用这一行将文本文件复制到 USB 闪存时;

if (QFile::copy(LastDayWaitListSource, LastDayWaitListTarget)) {
    qDebug() << "Copy OK";
}

Copy OK 出现在调试屏幕中。

然后从树莓派上拔下USB闪存,插上Windows 10笔记本就可以看到文本文件了。USB闪存中没有文本文件。

然后我用一个不同的过程重复相同的过程。

复制文本文件后,我在Linux中打开USB闪存目录/media/pi/USB_Stick_Dir可以看到复制的文本文件。我看到了复制的文本文件。然后我从 Raspberry Pi 中移除了 USB 闪存,然后插入 Windows 10 笔记本电脑,这次我在 Windows 中也看到了复制的文本文件。

为什么会这样?

【问题讨论】:

  • 第一次尝试寻找隐藏文件了吗?
  • 是的,我现在试过了。同样的。
  • 也有可能是权限问题,尝试在windows系统中以管理员身份打开文件资源管理器。
  • 有权限吗?
  • 不,很遗憾

标签: c++ qt operating-system


【解决方案1】:

问题是在从 Linux 系统中删除 USB 驱动器之前,您没有卸载它。试试:

sudo umount /media/pi/USB_Stick_Dir

编辑: 您也可以在 Qt 程序中执行此操作,为此您需要拥有CAP_SYS_ADMIN 权限。

CAP_SYS_ADMIN 功能允许进程执行各种管理任务,例如调用mount()umount()。您可以执行以下操作来卸载程序中的驱动器:

int res = umount("/media/pi/USB_Stick_Dir")
if (!res) {
    qDebug() << "Device unmounted successfuly";
} 

【讨论】:

  • 感谢您的建议,我认为它会起作用。我怎样才能拥有 CAP_SYS_ADMIN 特权?
  • 不客气,结帐this了解如何拥有CAP_SYS_ADMIN
  • 我检查了这个链接。什么是'ep executable-name'
  • 不是ep executable-name。这是cap_sys_admin+epexecutable-name。这里executable-name 指的是您的应用程序(二进制)名称,您为应用程序运行而执行的文件。
  • 我就是这么写的; sudo setcap cap_sys_admin+ep /appFilepath/app.run 。但是没有用
猜你喜欢
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 2016-11-21
  • 2012-05-22
  • 1970-01-01
相关资源
最近更新 更多