mkdir - Create a directory
#include <sys/types.h> #include <sys/stat.h>
int mkdir(
const char *path,
mode_t mode );
Interfaces documented on this reference page conform to
industry standards 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 created 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 symbolic 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 follow_mkdir_symlinks
attribute of the vfs kernel subsystem
is set to 1. See sys_attrs_vfs(5) for more
information about this attribute.
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. Permission 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 operation 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 permission 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 directory 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 policies. [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 contain
enough space to hold the contents of the new directory
or to extend the parent directory of the new
directory. A component 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 currently 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)
Others: standards(5)
mkdir(2)
[ Back ] |