此同步调用是否按预期工作?

此同步调用是否按预期工作?

我正在将一个文件(我们称之为xyz.bin)写入 USB 闪存驱动器...闪存驱动器安装在路径下:/media/myUsb ...

为了防止数据丢失,我正在执行如下同步命令:

sync -f /media/myUsb

然后,我使用其他命令分离/删除闪存驱动器,如下所示:安全移除

问题: 使用此闪存驱动器的团队告诉我,有时文件会损坏...我正在调试我的应用程序以丢弃任何内容,但我担心命令是否sync正确完成,或者我只是误解了sync man page.

编辑

我带来了有关正在执行的进程的其他详细信息(如果有帮助)...使用 JAVA:

  1. 我将文件复制到附加的随身碟或闪存驱动器。
  2. 我称操作系统 commnad 同步为:(sync -f /media/myUsb使用过程API
  3. 如果命令返回 OK(我使用以下命令等待它:进程.waitFor());然后,我执行udisksctl unmount -b <usbMountPoint>...
  4. 如果命令返回 OK(再次,我等待它......),那么我执行udisksctl power-off -b <usbDevice>

  5. 如果命令返回 OK(再次,我等待它......),那么我认为写入和分离成功!因此,我指示操作员移除随身碟或闪存驱动器...

  6. 然后,另一个团队收到随身碟并尝试读取写入的文件...有时,一切正常...其他时候,他们说文件已损坏,他们无法读取该文件...

现在,我正在做不同的测试来找出问题所在......但是,我的疑问是:执行的操作系统命令是否正确执行,或者我只是调用了一些根本没有意义的东西?

相关内容