1

我有一个应用程序,它创建了许多 unix 套接字来与它在运行时产生的所有进程进行交互。我认为 /run/appname 将是他们居住的好地方,因为据我了解, /run 应该用于来自应用程序的信息,这些信息仅在应用程序运行时有效。

但我发现

$ mkdir /run/appname
mkdir: cannot create directory '/run/appname': Permission denied

那么为什么普通用户不能在 /run 中创建文件呢?它是干什么用的?我应该坚持 /tmp 吗?

4

2 回答 2

0

/run 是为根/系统应用程序保留的。

1. Contact your system admin and ask him to create a socket file for you

或者

2. Put into /tmp or the specific forlder in $HOME/ 
于 2013-10-26T21:04:05.163 回答
0

$XDG_RUNTIME_DIR如果设置了变量,您应该将它们放在子目录中。请参阅 XDG Basedir 标准:https ://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html

如果没有设置,有几个地方需要考虑。许多发行版都在用户登录时创建了 systemd(或其他东西) ,因此如果未设置/run/user/<user-id>,它可能是开始查找的最佳位置。$XDG_RUNTIME_DIR如果失败了,我会退回到把东西放进去/tmp。您可能会尝试在 /tmp 中创建一个随机命名的目录,或者使用您的应用程序名称在用户名/id 之后创建一个目录,将chown其提供给应用程序的用户,设置任何适当的权限,然后将套接字放在那里。

于 2017-05-10T20:19:43.510 回答