我正在使用linux centos 7.4,我用'/ dev / sdxn'安装USB设备。
安装目录存在于'/ storage / mount_usb'中(例如:在一个文件中存在,如movie.mp4)。
如果我手动拔出(没有卸载它)并且我检查命令'lsblk'他们的'/ dev / sdxn'不存在,所以这里看起来对我来说没问题。
但是当我运行命令'll /storage/mount_usb/movie.mp4'时它仍然显示一些数据,我们也可以在读取模式下打开文件(使用open,fopen systemcall)。
命令'll /storage/mount_usb/movie.mp4'。 即-rwxrwxrwx。 1根root 1506417406 1月29日16:17 /storage/mount_usb/movie.mp4
但是当我运行命令'll / storage / mount_usb'时。 即:读取目录/ storage / mount_usb:输入/输出错误总计0
如果我使用opendir(“/ storage / mount_usb”),它也会成功打开,不会返回任何错误代码。
我无法理解拔下USB后数据仍然显示的原因。
答案 0 :(得分:-1)
我认为'll'是'ls -l'
opendir(“/ storage / mount_usb”)将起作用,因为该目录即使没有安装任何内容也存在。
如果所需数据仍在文件系统缓存中,则'll /storage/mount_usb/movie.mp4'可用。
'll / storage / mount_usb'不起作用,因为您要列出目录中的所有文件。为此,文件系统会尝试访问您已拔出插头的设备,而不会告诉文件系统。