/run/shm
在(以前的)中创建一个目录/dev/shm
并将其用作应用程序的临时目录是一种好的做法吗?
背景:我正在为一个程序编写黑盒测试,该程序对文件和目录执行很多操作。对于每个测试,我都会创建很多文件和目录,然后运行程序,然后创建预期的文件和目录集,然后运行 diff 进行比较。我现在有大约 40 个测试,它们的运行时间已经超过 2 秒。希望加快速度,我想在某种 ramdisk 上的目录中运行测试。
研究我偶然发现的内存盘一个问题答案表明可以创建一个目录/dev/shm
并像临时目录一样使用它。研究更多但我偶然发现维基页面debian 说直接使用是错误的/dev/shm
。我应该使用这些shm_*
功能。不幸的是,这些shm_*
函数似乎无法在 shell 脚本中使用。
现在我很困惑。是否可以像临时目录一样使用/run/shm
(以前)?/dev/shm
答案1
/run
只要您拥有适当的权限,使用某个目录是完全可以的。在一些现代发行版中,/tmp
它已经是内存中的虚拟文件系统或指向内部目录的符号链接/run
。如果这是您的情况(您可以在 中检查/etc/fstab
,或输入mtab
),您可以将/tmp
其用作临时目录。
另外,不要与 Debian 的文章混淆。shm_*
函数用于创建进程间通信的共享内存段。通过这些函数,您可以在两个或多个进程之间共享内存片段,以便它们使用相同的数据进行通信或协作。进程将内存段附加在自己的地址空间中,并且可以像往常一样在那里读写。内核处理复杂性。这些函数不能作为 shell 函数使用(并且在 shell 上下文中也不是很有用)。欲了解更多信息,请查看man 7 shm_overview
。本文的要点是,任何程序都不应直接管理代表共享内存段的伪文件,而应使用适当的函数来创建、附加和删除共享内存段。