XDG 基本目录规范是一个非常有趣的用户目录规范。它还提供了良好的默认值,除了XDG_RUNTIME_DIR
.
现在我正在编写一个需要创建命名管道的软件。它是一个针对每个用户的客户端-服务器框架(服务器有一个 FIFO,每个客户端有一个 FIFO)。
如果XDG_RUNTIME_DIR
未定义,我目前正在使用每个用户的子目录/tmp
——但它不能确保所有指定的条件(即以“目录的生命周期必须绑定到正在登录的用户……”开头的段落)
够/tmp/myserver-$USER
好吗?
编辑
我在其他地方看到了一些建议:
.
非常不令人满意(至少因为它不是绝对路径)。- 我也看到了
/var/run/user/$USER
——还不错,但是那个目录不存在(至少在我运行 Debian测试的机器上是这样)
SystemD
/run/user/$USER
有点强制性。http://www.freedesktop.org/software/systemd/man/file-hierarchy.html
/tmp
许多程序已经以类似的方式使用它。在我的系统上,我可以看到/tmp/orbit-$USER
(由 Gnome 的 ORBit2 使用)和/tmp/.X11-unix/
(Xorg 和 X11)目录,其中包含大量管道、嗯、套接字。我相信还有其他人,所以我看不出你在做什么。请做好准备,因为它是一个世界可写位置,恶意进程可以劫持该位置(在写入之前验证权限)。我也可以向
$TMPDIR
那些使用pam_mktemp的人推荐,因为这个目录只能由用户访问。使用唯一 ID 创建目录 /tmp/service-$USER.id。例如,在 shell 中: