mkdir - Creates a directory
int mkdir (
const char *path,
mode_t mode );
Interfaces documented on this reference page conform to industry standards as follows:
mkdir(): XPG4, XPG4-UNIX
Refer to the standards(5) reference page for more information about industry standards and associated tags.
Specifies the name of the new directory.
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. [Digital] 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 the umask() function). This parameter is constructed by logically ORing 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. 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 i-nodes on the file system containing the directory is exhausted. The named file already exists. The path parameter is an invalid address. 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. 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.
[Digital] 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.
Functions: chmod(2), mknod(2), rmdir(2), umask(2)
Commands: chmod(1), mkdir(1), mknod(8)
Standards: standards(5) delim off