MKNOD(2) | System Calls Manual | MKNOD(2) |
mknod
, mknodat
— make a special file node
#include
<sys/stat.h>
int
mknod
(const
char *path, mode_t
mode, dev_t
dev);
#include
<sys/stat.h>
#include <fcntl.h>
int
mknodat
(int
fd, const char
*path, mode_t mode,
dev_t dev);
The
mknod
()
function creates path with a file type and mode of
mode, as modified by
umask(2). Only FIFO and device
special files are supported by this implementation.
If mode is the bitwise OR of
S_IFIFO
and zero or more file permissions, and
dev is zero, then a FIFO is created. If
mode is the bitwise OR of
S_IFCHR
or S_IFBLK
and zero
or more file permissions, then a character or block device special
(respectively) is created with major and minor device numbers extracted from
dev.
The
mknodat
()
function is equivalent to mknod
() except that where
path specifies a relative path, the newly created
device special file is created relative to the directory associated with
file descriptor fd instead of the current working
directory.
If
mknodat
()
is passed the special value AT_FDCWD
(defined in
<fcntl.h>
) in the
fd parameter, the current working directory is used
and the behavior is identical to a call to
mknod
().
Creating a device special file with
mknod
() or
mknodat
() requires superuser privileges.
Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
mknod
() and
mknodat
() will fail and the file will be not created
if:
EINVAL
]ENOTDIR
]ENAMETOOLONG
]NAME_MAX
characters, or an entire pathname (including the terminating NUL) exceeded
PATH_MAX
bytes.ENOENT
]EACCES
]ELOOP
]EPERM
]EIO
]ENOSPC
]ENOSPC
]EDQUOT
]EDQUOT
]EROFS
]EEXIST
]EFAULT
]EINVAL
]Additionally, mknodat
() will fail if:
EBADF
]AT_FDCWD
nor a valid file descriptor.ENOTDIR
]EACCES
]The mknod
() and
mknodat
() functions conform to IEEE
Std 1003.1-2008 (“POSIX.1”).
The mknod
() system call first appeared in
Version 4 AT&T UNIX, and
mknodat
() has been available since
OpenBSD 5.0.
September 10, 2015 | OpenBSD-7.0 |