版权所有 © 2014 tutorialspoint
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int mknod(const char *pathname, mode_t mode, dev_t dev);
int mknod(const char *pathname, mode_t mode, dev_t dev);
mode 参数指定要使用的权限和要创建的节点类型。它应该是下面列出的文件类型之一与新节点的权限的组合(使用按位或)。
权限以通常的方式由进程的 umask 修改:创建的节点的权限为 (mode & ~umask)。
文件类型必须是 S_IFREG、S_IFCHR、S_IFBLK、S_IFIFO 或 S_IFSOCK 之一,分别指定普通文件(将被创建为空)、字符特殊文件、块特殊文件、FIFO(命名管道)或 Unix 域套接字。(零文件类型等效于类型 S_IFREG。)
如果文件类型是 S_IFCHR 或 S_IFBLK,则 dev 指定新创建的设备特殊文件的 major 和 minor 编号;否则忽略它。
如果 pathname 已经存在或是一个符号链接,则此调用将失败并出现 EEXIST 错误。
新创建的节点将由进程的有效用户 ID 拥有。如果包含该节点的目录设置了 set-group-ID 位,或者如果文件系统以 BSD 组语义挂载,则新节点将从其父目录继承组所有权;否则,它将由进程的有效组 ID 拥有。
在 Linux 下,此调用不能用于创建目录。应该使用 mkdir(2) 创建目录,使用 mkfifo(2) 创建 FIFO。
NFS 底层协议中存在许多不完善之处。其中一些会影响 mknod()。
fcntl (2)
mkdir (2)
mknodat (2)
mount (2)
path_resolution (2)
socket (2)
stat (2)
umask (2)
unlink (2)
广告