代码之家  ›  专栏  ›  技术社区  ›  cryogene

mknod的可移植性[重复]

  •  0
  • cryogene  · 技术社区  · 3 年前

    我想用 mknod 在我的代码中创建一个文件,但是 man 他说

    mknod()的唯一可移植用途是创建FIFO特殊文件。如果模式不是S_IFIFO或dev不是0,则 mknod()未指定。

    这是否意味着mknod不是真正可移植的,我应该使用其他方法来创建函数?打电话怎么样 open 然后马上 close ? 哪条路更安全?

    0 回复  |  直到 14 年前
        1
  •  7
  •   R.. GitHub STOP HELPING ICE    14 年前

    mknod 不是用来创建文件的。这是为了创造 设备节点 .便携式应用程序永远不需要创建设备节点,因为它们是否存在、是什么以及如何实现/编号是一个关键问题 实施细节 .

    建立特别文件 历史上允许您创建FIFO(可能还有普通文件?),但是有一些标准的接口: mkfifo 对于FIFO,以及 creat (或 open 具有 O_CREAT )普通档案。

        2
  •  1
  •   ismail    14 年前

    如果你阅读该段的其余部分,你会看到:

    However, nowadays one should never use mknod() for this purpose;
    one should use mkfifo(3), a function especially defined for this purpose.
    

    那又怎么样 POSIX.1-2001 这里说的已经过时了。我会忽略它。 mknod Linux系统中的init脚本仍在使用。