NAME
mkdir — make a directory file
SYNOPSIS
#include <sys/stat.h>
int mkdir(const char *path, mode_t mode);
DESCRIPTION
The
mkdir()
system call creates a new directory file named by
path.
The file permission bits of the new directory are initialized from
mode,
and 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 new directory's mode is cleared (see
umask(2)).
The directory's owner ID is set to the process's effective-user-ID.
If the set-group-ID bit of the parent directory is set,
the directory's group ID is set to the group ID of the parent directory.
Otherwise, the directory's group ID
is set to the process's effective-group-ID.
The set-group-ID bit of the new directory
is set to the same value as the set-group-ID bit of the parent directory.
Symbolic constants defining the access permission bits are found in the
<sys/stat.h>
header and are used to construct the argument
mode.
The value of the argument
mode
is the bitwise inclusive OR of the values of the desired permissions.
- S_IRUSR
Read by owner.
- S_IWUSR
Write by owner.
- S_IXUSR
Execute (search) by owner.
- S_IRGRP
Read by group.
- S_IWGRP
Write by group.
- S_IXGRP
Execute (search) by group.
- S_IROTH
Read by others (that is, anybody else).
- S_IWOTH
Write by others.
- S_IXOTH
Execute (search) by others.
Access Control Lists - HFS File Systems Only
On HFS file systems implementing access control lists,
the directory is created with three base ACL entries,
corresponding to the file access permission bits (see
acl(5)).
Access Control Lists - JFS File Systems Only
On JFS file systems that support access control lists, optional ACL
entries are created corresponding to the parent directory's default
ACL entries.
Also, the parent directory's default ACL entries are
copied as the new directory's default ACL entries (see
aclv(5)).
RETURN VALUE
mkdir()
returns one of the following values:
- 0
Successful completion.
- -1
Failure.
An error code is stored in
errno.
ERRORS
If
mkdir()
fails, no directory is created and
errno
is set to one of the following values:
- EACCES
A component of the path prefix denies search permission.
- EACCES
The parent directory of the new directory denies write permission.
- EDQUOT
User's or group's disk quota block or inode limit
has been reached for this file system.
- EEXIST
The named file already exists.
- EFAULT
path
points outside the process's allocated address space. The reliable
detection of this error is implementation dependent.
- EIO
An I/O error occurred while writing to the file system.
- ELOOP
Too many symbolic links are encountered in translating the path name.
- EMLINK
The maximum number of links to the parent directory,
LINK_MAX,
would be exceeded.
- 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
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.
- EROFS
The named file resides on a read-only file system.
AUTHOR
mkdir()
was developed by the University of California, Berkeley.
STANDARDS CONFORMANCE
mkdir(): AES, SVID2, SVID3, XPG3, XPG4, FIPS 151-2, POSIX.1