-2

我正在使用 linux centos 7.4,我使用“/dev/sdxn”安装 USB 设备。

'/storage/mount_usb' 中存在的挂载目录(例如:存在一个文件,如movie.mp4)。

如果我手动拔下插头(没有卸载它)并且我检查命令'lsblk'他们的'/dev/sdxn'不存在,所以这里看起来对我来说还可以。

但是当我运行命令'll /storage/mount_usb/movie.mp4'时,它仍然显示一些数据,我们还可以在读取模式下打开文件(使用open,fopen系统调用)。

命令'll /storage/mount_usb/movie.mp4'。即-rwxrwxrwx。1 根 1506417406 Jan 29 16:17 /storage/mount_usb/movie.mp4

但是当我运行命令'll / storage/mount_usb'时。即- ls:读取目录/storage/mount_usb:输入/输出错误总计0

如果我使用 opendir("/storage/mount_usb") 那么它也会成功打开并且不会返回任何错误代码。

我无法理解为什么拔下 USB 后数据仍然显示。

4

1 回答 1

-1

我假设'll'是'ls -l'

opendir("/storage/mount_usb") 将起作用,因为即使没有安装任何目录,该目录也存在。

如果所需的数据仍在文件系统缓存中,“将 /storage/mount_usb/movie.mp4”工作。

'll /storage/mount_usb' 不起作用,因为您想列出目录中的所有文件。为此,文件系统会尝试访问您已拔出的设备,而无需告知文件系统。

于 2018-01-30T10:29:27.687 回答