当使用UNIX套接字进行IPC通信时,必须在文件系统中创建一个文件。互联网上的许多示例都表明/tmp这是放置套接字的好地方。有些建议在使用时/tmp/specific_folder具有700保持/tmp清洁和套接字安全以防止其他用户访问的权限。
然而,这可靠吗?操作系统不能随时删除其中的任何文件吗?让我们假设这些文件将在那里保留数天或数月,并且某些文件可能在很长一段时间内(即数天)不用于通信。
此外,将这些文件存储在本地用户文件夹中(例如,./.hidden_sockets/)的缺点是,在系统崩溃等情况下,无法清除这些文件。即使系统重新启动后也不会。
你会把这些文件放在哪里?有标准/首选方式吗?
最好的位置可能是$XDG_RUNTIME_DIR下的子目录,非特权用户软件可以在其中存储运行时数据,例如通信原语。这与 /run 类似,但适用于用户应用程序。它是用户私有命名空间,因此使用起来非常安全。它会在注销时自动清除。粘滞位可防止文件通过“老化”随着时间的推移而被清理。