gpt4 book ai didi

c - 复制文件时删除了笔式驱动器

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:08 27 4
gpt4 key购买 nike

我正在用 C 语言编程(在嵌入式环境中)。 USB 可以连接到该设备。现在,当我通过我的代码将文件从 USB 复制到该设备时,如果有人移除了 pendrive,那么我们如何检测 pendrive 的移除或如何处理这种情况。

设备架构:ARM,Linux平台

我可以通过比较文件复制源和目标位置的文件大小来检查文件是否已完全复制。但是请让我知道任何其他方法来确保文件是否成功复制(如果 pendrive 在两者之间被删除)。我正在这样复制:

 sprintf(str, "cp %s%s /mnt/disk/.;sync", FILE_OP_PATH, name);
96 system(str);

最佳答案

那么,如果源设备突然丢失,您正在执行的系统调用(直接或间接通过标准库)将会失败。

如果您使用的是普通的 <a href="http://linux.die.net/man/2/read" rel="noreferrer noopener nofollow">read()</a>从 USB 驱动器读取,我认为它会失败并设置 errnoEIO ,如文档所述:

It may also occur when there is a low-level I/O error while reading from a disk or tape.

在读取过程中强行卸载驱动器对我来说听起来像是“低级 I/O 错误”。

首先按照上面的方法检测故障可能是最简单的方法,当然您的复制代码已经这样做了,然后作为后续尝试诊断出了什么问题并导致了错误,您可以可能会检查安装台,看看设备是否还在。

关于c - 复制文件时删除了笔式驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8891766/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com