NAME
mknod() — make a directory, special, or ordinary file
SYNOPSIS
#include <sys/stat.h>
int mknod(const char *path, mode_t mode, dev_t dev);
DESCRIPTION
The
mknod()
system call creates a new file named by the path name pointed to by
path.
The mode of the new file is specified by the
mode
argument.
Symbolic constants that define the file type
and file access permission bits are found in the
<sys/stat.h>
header file and are used to construct the
mode
argument.
The value of the
mode
argument should be the bit-wise inclusive OR
of the values of the desired file type,
miscellaneous mode bits, and access permissions.
See
stat(5)
for a description of the components of the file mode.
The owner ID of the file is set to the effective-user-ID of the process.
If the set-group-ID bit of the parent directory is set,
the new file's group ID is set to the group ID of the parent directory.
Otherwise, the new file's group ID is set
to the effective-group-ID of the process.
The file access permission bits of
mode
are modified by the process's file mode creation mask:
for each bit set in the process's file mode creation mask,
the corresponding bit in the file's mode is cleared (see
umask(2)).
In HFS file systems, the new file is created with three base
access-control-list (ACL) entries, corresponding to the file access
permission bits (see
acl(5)).
On JFS file systems that support access control lists, when creating
a directory or regular file, optional ACL entries are created
corresponding to the parent directory's default ACL entries (see
aclv(5)).
When creating a directory, the parent's default ACL
entries are also copied as the new directory's default ACL entries.
The
dev
argument is meaningful only if
mode
indicates a block or character special file, and is ignored otherwise.
It is an implementation- and configuration-dependent
specification of a character or block I/O device.
The value of
dev
is created by using the
makedev()
macro defined in
<sys/mknod.h>.
The
makedev()
macro takes as arguments the major and minor device numbers,
and returns a device identification number which is of type
dev_t.
The value and interpretation of the major and minor device numbers
are implementation-dependent.
For more information, see
mknod(5)
and the System Administration manuals for your system.
Only users having
appropriate privileges
can invoke
mknod()
for file types other than FIFO files.
RETURN VALUE
mknod()
returns the following values:
- 0
Successful completion.
- -1
Failure.
The new file is not created.
errno
is set to indicate the error.
ERRORS
If
mknod()
fails,
errno
is set to one of the following values.
- EACCES
The directory in which
path
would be created denies write permission,
mode
is for a FIFO file and the caller does not have
appropriate privileges.
- EACCES
A component of the path prefix denies search permission.
- EDQUOT
The user's or group's disk quota block or inode limit
has been reached for this file system.
- EEXIST
The named path already exists.
- EFAULT
The
path
argument points outside the process's allocated address space.
The reliable detection of this error is implementation dependent.
- ELOOP
Too many symbolic links were encountered in translating the path name.
- ENAMETOOLONG
The length of the specified path name exceeds
PATH_MAX
bytes, or the length of a component of the path name exceeds
NAME_MAX
bytes while
_POSIX_NO_TRUNC
is in effect.
- ENOENT
The
path
argument is null.
- ENOENT
A component of the path prefix does not exist.
- ENOSPC
Not enough space on the file system.
- ENOTDIR
A component of the path prefix is not a directory.
- EPERM
The effective-user-ID of the process does not match that of a user who has
appropriate privileges,
and the file type is not FIFO special.
- EROFS
The directory in which the file is to be created
is located on a read-only file system.
AUTHOR
mknod()
was developed by
AT&T and HP.
SEE ALSO
mknod(1M),
acl(2),
chmod(2),
exec(2),
mkdir(2),
setacl(2),
umask(2),
acl(5),
aclv(5),
mknod(5),
stat(5),
types(5).
STANDARDS CONFORMANCE
mknod(): SVID2, SVID3, XPG2