【问题标题】:What is the naming convention for Unix FIFOs/named pipes?Unix FIFO/命名管道的命名约定是什么?
【发布时间】:2015-11-15 22:59:12
【问题描述】:

各种手册页通常举例说明在 /tmp 目录中打开的 FIFO,但它们不共享通用命名约定。当我列出我的/tmp dir' 的内容时,除了命名为/tmp/ssh-5oRuBPhI9lv9 的目录外,我什么也得不到。是否有约定,尤其/专门针对 IPC?

【问题讨论】:

标签: unix ipc named-pipes conventions fifo


【解决方案1】:

没有正式的命名约定。

当然,在使用 FIFO 时,您需要一些约定,因为 FIFO 通常用于不相关进程之间的进程通信。因此,不同的进程必须知道该名称,这意味着您必须遵循某种约定,但这是您的决定。

您在/tmp 中看到名称神秘的目录和文件的原因通常是相应进程调用mkstemp(3) 或mkdtemp(3) 的结果。这些函数自动生成一个唯一的名称并创建相应的文件/目录。

如果出于某种原因您希望 FIFO 具有相似的名称,您可以使用 tmpnam(3) 生成一个唯一名称,然后将该名称传递给 mkfifo(3)。但请注意,在调用tmpnam(3) 和调用mkfifo(3) 之间有一个时间窗口,另一个进程可以创建同名文件(然后mkfifo(3) 将失败)。如果这是个问题,您可以改为使用 mkdtemp(3) 原子地创建一个临时目录,然后在该目录中使用您选择的名称创建 FIFO。

之所以没有确定的方法来自动生成和创建一个临时的、唯一命名的 FIFO,是因为 FIFO 被用作不相关进程的集合点,所以通常必须知道名称​​先验 .拥有一个具有唯一临时名称的 FIFO 会使其他进程更难找到它,这有悖于目的。

【讨论】:

    猜你喜欢
    • 2012-07-31
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多