mknod(2)mknod(2)Namemknod - make a directory or a special file
Syntax
#include <sys/types.h>
#include <sys/stat.h>
int mknod(path, mode, dev)
char *path;
mode_t mode;
int dev;
Description
The system call creates a new file whose name is path. The mode of the
new file (including special file bits) is initialized from mode, where
the value of mode is interpreted as follows:
S_IFMT-0170000 File type; one of the following:
S_IFIFO-0010000 FIFO special
S_IFCHR-0020000 Character special
S_IFDIR-0040000 Directory
S_IFBLK-0060000 Block special
S_IFREG-0100000
or 0000000 Ordinary file
S_IRWXU-0007000 Execution mode; made from the following:
S_ISUID-0004000 Set user ID on execution
S_ISGID-0002000 Set group ID on execution
S_ISVTX-0001000 Save text image after execution
00777 Access permissions; made from the following:
S_IREAD-0000400 Read by owner
S_IWRITE-0000200 Write by owner
S_IEXEC-0000100 Execute (search on directory) by owner
s_IRWXG-0000070 Read, write, execute (search) by group
S_IRWXD-0000007 Read, write, execute (search) by others
The file's owner ID is set to the process's effective user ID. The
file's group ID is set to the parent directory's group ID.
Values of mode other than those in the preceeding list are undefined
and should not be used. The low-order nine bits of mode are modified
by the process's file mode creation mask: all bits set in the process's
file mode creation mask are cleared. For further information, see If
mode indicates a block or character special file, dev is a configura‐
tion dependent specification of a character or block I/O device. If
mode does not indicate a block special or character special device, dev
is ignored.
For file types other than FIFO special, only the superuser can invoke
the system call.
Return Values
The system call returns a value of 0 upon successful completion. Oth‐
erwise, returns a value of -1, and sets errno to indicate the error.
Diagnostics
The system call fails and the file mode is unchanged under the follow‐
ing conditions:
[EPERM] The process's effective user ID is not superuser.
[ENOTDIR] A component of the path prefix is not a directory.
[ENOENT] A component of the path prefix does not exist.
[EROFS] The named file resides on a read-only file system.
[EEXIST] The named file exists.
[EFAULT] Path points outside the process's allocated address
space.
[ELOOP] Too many symbolic links were encountered in translating
the pathname.
[ENAMETOOLONG] A component of a pathname exceeded 255 characters, or an
entire pathname exceeded 1023 characters.
[EACCES] Search permission is denied for a component of the path
prefix.
[EIO] An I/O error occurred while making the directory entry
or allocating the inode.
[ENOSPC] The directory in which the entry for the new node is
being placed cannot be extended, because there is no
space left on the file system.
[ENOSPC] There are no free inodes on the file system on which the
node is being created.
[EDQUOT] The directory in which the entry for the new node is
being placed cannot be extended because the user's quota
of disk blocks on the file system containing the direc‐
tory has been exhausted.
[EDQUOT] The user's quota of inodes on the file system on which
the node is being created has been exhausted.
[ESTALE] The file handle given in the argument is invalid. The
file referred to by that file handle no longer exists or
has been revoked.
[ETIMEDOUT] A connect request or remote file operation failed
because the connected party did not properly respond
after a period of time that is dependent on the communi‐
cations protocol.
See Alsomkdir(1), chmod(2), execve(2), stat(2), umask(2), fs(5)mknod(2)