是mknod便携式?如果没有,有什么替代方案?

时间:2010-12-28 13:20:35

标签: c posix mknod

我想在我的代码中使用mknod来创建文件,但是man说,

  

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

这是否意味着,mknod不是真正可移植的,我应该用其他方式来创建一个函数?如何调用open和即时close?哪种方式更安全?

2 个答案:

答案 0 :(得分:7)

mknod不适用于创建文件。它用于创建设备节点。便携式应用程序永远不需要创建设备节点,因为它们是否存在,它们是什么以及它们如何实现/编号是实现细节

mknod历史上允许你创建fifos(也许是普通文件?),但是有相应的标准接口:for mkfifo for fifos,creat(或{{ 1}} open)用于普通文件。

答案 1 :(得分:1)

如果您阅读该段落的其余部分,您将看到:

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这里所说的已经过时了。我会忽略它。 Linux系统中的init脚本仍在使用mknod