在Linux上放置命名pipe道的适当位置是什么?

我有几个通过命名pipe道相互对话的进程。 目前,我正在本地创build所有pipe道,并将应用程序保存在同一个工作目录中。 在某些时候,假定这些程序可以(并且将会)从不同的目录运行。 我需要在已知位置创build这些pipe道,以便所有不同的应用程序都能find他们需要的pipe道。

我是Linux新手,不熟悉文件系统结构。 在Windows中,我会使用类似于AppData文件夹来保留这些pipe道。 我不确定在Linux中相当于什么。

/tmp目录看起来像它可能可以很好地运作。 我已经在几个地方看过,它在系统closures时被清除了(这很好,当我开始备份时,我没有可能重新创buildpipe道),但是我看到其他一些人说他们正在丢失文件当系统启动时,就好像是定期清理一样,我不想在我的应用程序使用这些pipe道时发生这种情况!

有没有更适合特定app store的地方? 或者/tmp是我想要保留的地方(因为他们毕竟是临时的)?

我见过使用/var/run SaltStack。 唯一的问题是你需要root访问权限才能写入该目录,但假设你将把你的进程作为系统守护进程来运行。 SaltStack在安装时创建/var/run/salt并将所有者更改为salt以便稍后可以不使用root权限。

我也检查了文件系统层次结构标准,尽管这并不重要,甚至他们说:

维护临时UNIX域套接字的系统程序必须将它们放在这个目录中。

由于命名管道是非常相似的东西,我会以同样的方式。

在systemd /run/user/<userid> (在登录时由pam_systemd创建,如果它尚不存在的话)的较新的Linux发行版可以用于打开套接字并将.pid文件放在那里而不是/var/run ,其中只有root有权访问。 另外请注意, /var/run/var/run的一个符号链接,因此也可以使用/var/run/user/<userid> 。 欲了解更多信息,请查看此主题 。 这个想法是,系统守护进程应该有一个/var/run/<daemon name>/目录安装时创建适当的权限,并把他们的套接字/ PID文件在那里,而用户运行的守护进程(如pulseaudio)应该使用/run/user/<userid>/ 。 另一个选项是/tmp/var/tmp