是否有可靠的跨平台(无论如何在* nix上)在另一台设备上创建临时文件?

时间:2015-01-19 01:58:19

标签: unix shared-memory mount tmpfs

我正在尝试编写一些应该在文件系统树上进行迭代的代码的测试用例,但是如果文件在另一台设备上则应该停止。在为它编写测试时,我考虑在/dev/shm中创建一个文件,从我的测试目录中对它进行符号链接,然后检查它是否未被读取,但/dev/shm似乎是特定于Linux的。 mount - tmpfs可能是一个选项,但它需要root ...

有关如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:3)

尝试FUSE:http://fuse.sourceforge.net/。 Linux,FreeBSD / NetBSD,OpenSolaris和Mac OS X都支持FUSE,因此,您用于测试的任何玩具文件系统(参见http://sourceforge.net/p/fuse/wiki/FileSystems/

a)跨平台 b)在用户空间(不需要root) 和 c)不需要太多的测试脚手架来安装和拆卸

答案 1 :(得分:0)

这取决于你如何定义"设备"。您是否考虑在同一设备上的同一磁盘上的不同文件系统上的文件?

使用stat(2),您可以从包含返回st_dev的{​​{1}}字段中的字段的文件系统中获取数字ID。这样你就可以区分文件系统。