mkdir(2)mkdir(2)NAMEmkdir - Create a directory
#include <sys/types.h> #include <sys/stat.h>
const char *path,
mode_t mode );
Interfaces documented on this reference page conform to industry stan‐
dards as follows:
mkdir(): XSH4.0, XSH4.2, XSH5.0
Refer to the standards(5) reference page for more information about
industry standards and associated tags.
Specifies the path of the new directory.
[Tru64 UNIX] If NFS is installed on your system, this path can
cross into another node. In this case, the new directory is cre‐
ated at that node.
[Tru64 UNIX] Symbolic links in the path are traversed with the
following exceptions: If the final node of path refers to a sym‐
bolic link whose target directory exists, the new directory is
not created and the [EEXIST] error is returned. If the final
node of path is a symbolic link whose target directory does not
exist, the new directory is not created and the [EEXIST] error
is returned unless one of the following conditions is true: The
path value ends with a slash (/) character. The fol‐
low_mkdir_symlinks attribute of the vfs kernel subsystem is set
to 1. See sys_attrs_vfs(5) for more information about this
If the target directory of the symbolic link does not exist and
either of these conditions is true, the target directory of the
symbolic link is created. For security reasons, the default
function behavior is strongly recommended. In other words, do
not include the slash character at the end of the path value and
keep the follow_mkdir_symlinks attribute at its default setting,
which is 0 (zero). Specifies the mask for the read, write, and
execute (RWX) flags for owner, group, and others.
The mkdir() function creates a new directory with the following
attributes: The owner ID is set to the process's effective user ID.
The group ID is set to the group ID of its parent directory.
[Tru64 UNIX] However, if the sys_v_mode tunable is set, then
the group ID of the file is set to the effective group ID of the
process. With exception, if the S_ISGID bit of the parent
directory is set, the group ID of the file is set to the group
ID of the parent directory and its S_ISGID bit is set.
If the group ID of the new file does not match the effective
group of the process or one of the supplementary group IDs of
the process, the S_ISGID bit of the new file is cleared. Per‐
mission and attribute bits are set according to the value of the
mode parameter modified by the process's file creation mask (see
umask(2)). This parameter is constructed by a logical OR opera‐
tion on values described in the <sys/mode.h> header file. The
new directory is empty, except for (dot) and (dot-dot).
To execute the mkdir() function, a process must have search permission
to get to the parent directory of the path parameter and write permis‐
sion in the parent directory of the path parameter with respect to all
of the system's configured access control policies.
Upon successful completion, the mkdir() function marks the st_atime,
st_ctime, and st_mtime fields of the directory for update, and marks
the st_ctime and st_mtime fields of the new directory's parent direc‐
tory for update.
Upon successful completion, the mkdir() function returns a value of 0
(zero). If the mkdir() function fails, a value of -1 is returned, and
errno is set to indicate the error.
If the mkdir() function fails, the directory is not created and errno
may be set to one of the following values: Creating the requested
directory requires writing in a directory with a mode that denies write
permission, or search permission is denied on the parent directory of
the directory to be created. The process does not have write access to
the parent directory with respect to one of the system's access poli‐
cies. [Tru64 UNIX] The directory in which the entry for the new link
is being placed cannot be extended because the user's quota of disk
blocks or inodes on the file system containing the directory is
exhausted. The named file already exists.
[Tru64 UNIX] By default, this error is returned when the final
node of the specified path is a symbolic link. [Tru64
UNIX] The path parameter is an invalid address. [Tru64
UNIX] The owner or group ID is not a value that is supported by
this implementation. A physical I/O error has occurred. Too
many links were encountered in translating path. The link count
of the parent directory would exceed LINK_MAX. The length of
the path parameter exceeds PATH_MAX or a pathname component is
longer than NAME_MAX.
Pathname resolution of a symbolic link produced an intermediate
result whose length exceeds PATH_MAX. A component of the path
parameter does not exist or points to an empty string. Unable
to allocate a directory buffer. The file system does not con‐
tain enough space to hold the contents of the new directory or
to extend the parent directory of the new directory. A compo‐
nent of the path prefix is not a directory. The named file
resides on a read-only file system.
[Tru64 UNIX] For NFS file access, if the mkdir() function fails, errno
may also be set to one of the following values: Indicates either that
the system file table is full, or that there are too many files cur‐
rently open in the system. Indicates a stale NFS file handle. A client
cannot make a directory because the server has unmounted or unexported
the remote directory.
Commands: chmod(1), mkdir(1), mknod(8)
Functions: chmod(2), mknod(2), rmdir(2), umask(2)