mknod(2) mknod(2)
NAME
mknod - make directory, special file, or ordinary file
SYNOPSIS
#include <sys/types.h>
#include <sys/stat.h>
int mknod(const char *path, modet mode, devt dev);
DESCRIPTION
mknod() creates a new file named by the pathname pointed to by path.
The file type and permissions of the new file are initialized from
mode.
The file type is specified in mode by the SIFMT bits, which must be
set to one of the following values:
SIFIFO fifo special
SIFCHR character-oriented file
SIFDIR directory
SIFBLK block-oriented file
SIFREG ordinary file
The only portable use of mknod() is to create a FIFO-special file. If
mode is not SIFIFO or dev is not 0, the behavior of mknod() is
unspecified.
The permissions for the new file are OR-ed into the mode argument, and
may be selected from any combination of the following symbolic con-
stants:
SISUID 04000 Set user ID on execution.
SISGID 020#0 Set group ID on execution if # is 7, 5, 3, or 1.
Enable file/record locking if # is 6, 4, 2, or 0
SISVTX 01000 Save text image after execution.
SIRWXU 00700 Read, write, execute by owner.
SIRUSR 00400 Read by owner.
SIWUSR 00200 Write by owner.
SIXUSR 00100 Execute or search by owner.
SIRWXG 00070 Read, write, execute by group.
SIRGRP 00040 Read by group.
SIWGRP 00020 Write by group.
SIXGRP 00010 Execute by group.
SIRWXO 00007 Read, write, execute or search by others.
SIROTH 00004 Read by others.
SIWOTH 00002 Write by others
SIXOTH 00001 Execute by others.
The owner ID of the file is set to the effective user ID of the pro-
cess. The group ID of the file is set to the effective group ID of the
process. However, if the SISGID bit is set in the parent directory,
then the group ID of the file is inherited from the parent. If the
Page 1 Reliant UNIX 5.44 Printed 11/98
mknod(2) mknod(2)
group ID of the new file does not match the effective group ID or one
of the supplementary group IDs, the SISGID bit is cleared.
The access permission bits of mode are modified by the process' file
mode creation mask: all bits set in the process' file mode creation
mask are cleared [see umask(2)]. If mode indicates a block or char-
acter-oriented file, dev is a configuration-dependent specification of
this file. If mode does not indicate a block or character-oriented
device, dev is ignored.
Upon successful completion, mknod() marks for update the statime,
stctime and stmtime fields of the file. Also, the stctime and
stmtime fields of the directory that contains the new entry are
marked for update.
Only a process with appropriate privileges may invoke mknod() for file
types other than FIFO-special.
If path is a symbolic link, it is not followed.
ERRORS
The following error code descriptions are function-specific. You will
find a general description in introprm2(2) or in errno(5).
mknod() fails and creates no new file if one or more of the following
are true:
EEXIST The named file exists.
EINVAL dev is invalid.
EFAULT path points outside the allocated address space of the
process.
ELOOP Too many symbolic links were encountered in translating
path.
EMULTIHOP Components of path require hopping to multiple remote
machines and the file system type does not allow it.
ENAMETOOLONG The length of the path argument exceeds PATHMAX or the
length of a path component exceeds NAMEMAX.
ENOTDIR A component of the path prefix is not a directory.
ENOENT A component of the path prefix does not exist or is a
null pathname.
EROFS The directory in which the file is to be created is
located on a read-only file system.
EINTR A signal was caught during the mknod() system call.
Page 2 Reliant UNIX 5.44 Printed 11/98
mknod(2) mknod(2)
ENOLINK path points to a remote machine and the link to that
machine is no longer active.
EPERM The invoking process does not have appropriate privi-
leges and the file type is not FIFO-special.
EACCES A component of the path prefix denies search permission,
or write permission is denied on the parent directory.
EIO An I/O error occurred while accessing the file system.
ENOSPC The directory that would contain the new file cannot be
extended or the file system is out of file allocation
resources.
The mknod() function may fail if:
ENAMETOOLONG Pathname resolution of a symbolic link produced an
intermediate result whose length exceeds PATHMAX.
RESULT
Upon successful completion a value of 0 is returned. Otherwise, a
value of -1 is returned and errno is set to indicate the error.
SEE ALSO
mkdir(1), chmod(2), exec(2), umask(2), mkfifo(3C), fs(4), stat(5),
types(5).
Page 3 Reliant UNIX 5.44 Printed 11/98