mknod() - make directory, special, or ordinary file
int mknod(const char *path, mode_t mode, dev_t dev);
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
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 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
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
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.
Hewlett-Packard Company - 1 - HP-UX Release 11i: November 2000
Only users having appropriate privileges can invoke mknod() for file
types other than FIFO files.
mknod() returns the following values:
0 Successful completion.
-1 Failure. The new file is not created. errno is set to
indicate the error.
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
[EACCES] A component of the path prefix denies search
[EDQUOT] The user'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.
Hewlett-Packard Company - 2 - HP-UX Release 11i: November 2000
[EROFS] The directory in which the file is to be created
is located on a read-only file system.
mknod() was developed by AT&T and HP.
mknod(1M), acl(2), chmod(2), exec(2), mkdir(2), setacl(2), umask(2),
fs(4), acl(5), aclv(5), mknod(5), stat(5), types(5).
mknod(): SVID2, SVID3, XPG2
Hewlett-Packard Company - 3 - HP-UX Release 11i: November 2000