我正在尝试为一些代码编写一个测试用例,这些代码应该遍历文件系统树,但如果文件在另一台设备上,则应停止。在为它编写测试时,我考虑在 /dev/shm
中创建一个文件,从我的测试目录符号链接到它,然后检查它是否未被读取,但/dev/shm
似乎是特定于 Linux 的。 mount
-ing tmpfs
可能是一种选择,但它需要 root...
任何想法如何实现?
试试 FUSE : http://fuse.sourceforge.net/。在 Linux、FreeBSD/NetBSD、OpenSolaris 和 Mac OS X 下都支持 FUSE,因此,无论您使用什么玩具文件系统进行测试(见 http://sourceforge.net/p/fuse/wiki/FileSystems/),都将
a) 跨平台b) 在用户空间中(不需要根)和c) 不需要太多的测试脚手架来设置和拆卸
这取决于您如何定义"设备"。您是否考虑同一设备上同一磁盘上不同文件系统上的文件?
使用 stat(2)
您可以从包含返回struct stat
的 st_dev
字段中字段的文件系统中获取数字 ID。这样您就可以区分文件系统。