我应该在哪里创建文件以便任何进程都可以访问它?

我应该在哪里创建文件以便任何进程都可以访问它?

我正在制作一个可以由多个用户多次创建的程序,我想有一个文件可以用来跟踪程序信息 ID、PID、端口等,这样就很好了。程序知道该程序的其他实例正在运行。

我希望我的程序能够在多个 UNIX 发行版(以及 macOS)上运行,我想知道创建文件的最佳位置是什么,例如/var/{name}/Library/{name},我可能必须根据操作系统使用不同的路径,但我的选项差异较小有更好的。

另外,我的另一个选择是制作一个在根目录中运行并跟踪它的服务器,但我认为这对于仅跟踪正在运行的实例来说太多了,并且文件是一个更好的选择,但您认为呢?

答案1

我建议你阅读男子7级似乎/var/run正是您正在寻找的。因为通过阅读手册页来获取这些信息并不容易,并且如果您之前没有使用过这些信息:您可以通过 procfs 文件系统访问过程数据,并且/proc/$pid/env可以在下面访问为程序设置的环境变量。利用这一点,您可以区分不同的实例。

但请注意,您需要正确的访问权限才能写入/var/run,并且通常通过正确安装程序(最好是由包管理器)来存档。如果您需要一个更简单的解决方案,该解决方案也适用于用户帐户(!= root),我知道还有另一种做法:例如,X 服务器将共享文件写入其中/tmp。这也可能是您的替代方案。/tmp或者/dev/shm通常是可以使用易失性存储器的更远的地方。对于此类“状态”文件来说,这是一个很好的做法,因为它会减少阻塞,例如,硬盘可以从睡眠中旋转起来,或者存储卡在损坏之前只有这么多的写入周期。

有多便携?我认为/dev/shm这不是 FreeBSD 系统上的最佳选择,其他的应该可以工作,但我完全不知道它在 MacOS 下的情况如何。不过,我相信 Apple 也提供了 hier(7) 手册。

相关内容