1.\" Copyright (c) 1983, 1991, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 3. Neither the name of the University nor the names of its contributors 13.\" may be used to endorse or promote products derived from this software 14.\" without specific prior written permission. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" @(#)mkdir.2 8.2 (Berkeley) 12/11/93 29.\" 30.Dd March 30, 2020 31.Dt MKDIR 2 32.Os 33.Sh NAME 34.Nm mkdir , 35.Nm mkdirat 36.Nd make a directory file 37.Sh LIBRARY 38.Lb libc 39.Sh SYNOPSIS 40.In sys/stat.h 41.Ft int 42.Fn mkdir "const char *path" "mode_t mode" 43.Ft int 44.Fn mkdirat "int fd" "const char *path" "mode_t mode" 45.Sh DESCRIPTION 46The directory 47.Fa path 48is created with the access permissions specified by 49.Fa mode 50and restricted by the 51.Xr umask 2 52of the calling process. 53.Pp 54The directory's owner ID is set to the process's effective user ID. 55The directory's group ID is set to that of the parent directory in 56which it is created. 57.Pp 58The 59.Fn mkdirat 60system call is equivalent to 61.Fn mkdir 62except in the case where 63.Fa path 64specifies a relative path. 65In this case the newly created directory is created relative to the 66directory associated with the file descriptor 67.Fa fd 68instead of the current working directory. 69If 70.Fn mkdirat 71is passed the special value 72.Dv AT_FDCWD 73in the 74.Fa fd 75parameter, the current working directory is used and the behavior is 76identical to a call to 77.Fn mkdir . 78.Sh RETURN VALUES 79.Rv -std mkdir 80.Sh ERRORS 81The 82.Fn mkdir 83system call 84will fail and no directory will be created if: 85.Bl -tag -width Er 86.It Bq Er ENOTDIR 87A component of the path prefix is not a directory. 88.It Bq Er ENAMETOOLONG 89A component of a pathname exceeded 255 characters, 90or an entire path name exceeded 1023 characters. 91.It Bq Er ENOENT 92A component of the path prefix does not exist. 93.It Bq Er EACCES 94Search permission is denied for a component of the path prefix, 95or write permission is denied 96on the parent directory of the directory to be created. 97.It Bq Er ELOOP 98Too many symbolic links were encountered in translating the pathname. 99.It Bq Er EPERM 100The parent directory of the directory to be created has its immutable flag set, 101see the 102.Xr chflags 2 103manual page for more information. 104.It Bq Er EROFS 105The named directory would reside on a read-only file system. 106.It Bq Er EMLINK 107The new directory cannot be created because the parent directory contains 108too many subdirectories. 109.It Bq Er EEXIST 110The named file exists. 111.It Bq Er ENOSPC 112The new directory cannot be created because there is no space left 113on the file system that will contain the directory. 114.It Bq Er ENOSPC 115There are no free inodes on the file system on which the 116directory is being created. 117.It Bq Er EDQUOT 118The new directory cannot be created because the user's 119quota of disk blocks on the file system that will 120contain the directory has been exhausted. 121.It Bq Er EDQUOT 122The user's quota of inodes on the file system on 123which the directory is being created has been exhausted. 124.It Bq Er EIO 125An I/O error occurred while making the directory entry or allocating the inode. 126.It Bq Er EIO 127An I/O error occurred while reading from or writing to the file system. 128.It Bq Er EINTEGRITY 129Corrupted data was detected while reading from the file system. 130.It Bq Er EFAULT 131The 132.Fa path 133argument 134points outside the process's allocated address space. 135.El 136.Pp 137In addition to the errors returned by the 138.Fn mkdir , 139the 140.Fn mkdirat 141may fail if: 142.Bl -tag -width Er 143.It Bq Er EBADF 144The 145.Fa path 146argument does not specify an absolute path and the 147.Fa fd 148argument is neither 149.Dv AT_FDCWD 150nor a valid file descriptor open for searching. 151.It Bq Er ENOTDIR 152The 153.Fa path 154argument is not an absolute path and 155.Fa fd 156is neither 157.Dv AT_FDCWD 158nor a file descriptor associated with a directory. 159.El 160.Sh SEE ALSO 161.Xr chflags 2 , 162.Xr chmod 2 , 163.Xr stat 2 , 164.Xr umask 2 165.Sh STANDARDS 166The 167.Fn mkdir 168system call is expected to conform to 169.St -p1003.1-90 . 170The 171.Fn mkdirat 172system call follows The Open Group Extended API Set 2 specification. 173.Sh HISTORY 174The 175.Fn mkdirat 176system call appeared in 177.Fx 8.0 . 178The 179.Fn mkdir 180system call appeared in 181.At v1 . 182