1.\" Copyright (c) 1980, 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.\" @(#)mknod.2 8.1 (Berkeley) 6/4/93 29.\" 30.Dd March 30, 2020 31.Dt MKNOD 2 32.Os 33.Sh NAME 34.Nm mknod , 35.Nm mknodat 36.Nd make a special file node 37.Sh LIBRARY 38.Lb libc 39.Sh SYNOPSIS 40.In sys/stat.h 41.Ft int 42.Fn mknod "const char *path" "mode_t mode" "dev_t dev" 43.Ft int 44.Fn mknodat "int fd" "const char *path" "mode_t mode" "dev_t dev" 45.Sh DESCRIPTION 46The file system node 47.Fa path 48is created with the file type and access permissions specified in 49.Fa mode . 50The access permissions are modified by the process's umask value. 51.Pp 52If 53.Fa mode 54indicates a block or character special file, 55.Fa dev 56is a configuration dependent specification denoting a particular device 57on the system. 58Otherwise, 59.Fa dev 60is ignored. 61.Pp 62The 63.Fn mknod 64system call 65requires super-user privileges. 66.Pp 67The 68.Fn mknodat 69system call is equivalent to 70.Fn mknod 71except in the case where 72.Fa path 73specifies a relative path. 74In this case the newly created device node is created relative to the 75directory associated with the file descriptor 76.Fa fd 77instead of the current working directory. 78If 79.Fn mknodat 80is passed the special value 81.Dv AT_FDCWD 82in the 83.Fa fd 84parameter, the current working directory is used and the behavior is 85identical to a call to 86.Fn mknod . 87.Sh RETURN VALUES 88.Rv -std mknod 89.Sh ERRORS 90The 91.Fn mknod 92system call 93will fail and the file will be not created if: 94.Bl -tag -width Er 95.It Bq Er ENOTDIR 96A component of the path prefix is not a directory. 97.It Bq Er ENAMETOOLONG 98A component of a pathname exceeded 255 characters, 99or an entire path name exceeded 1023 characters. 100.It Bq Er ENOENT 101A component of the path prefix does not exist. 102.It Bq Er EACCES 103Search permission is denied for a component of the path prefix. 104.It Bq Er ELOOP 105Too many symbolic links were encountered in translating the pathname. 106.It Bq Er EPERM 107The process's effective user ID is not super-user. 108.It Bq Er EIO 109An I/O error occurred while making the directory entry or allocating the inode. 110.It Bq Er EINTEGRITY 111Corrupted data was detected while reading from the file system. 112.It Bq Er ENOSPC 113The directory in which the entry for the new node is being placed 114cannot be extended because there is no space left on the file 115system containing the directory. 116.It Bq Er ENOSPC 117There are no free inodes on the file system on which the 118node is being created. 119.It Bq Er EDQUOT 120The directory in which the entry for the new node 121is being placed cannot be extended because the 122user's quota of disk blocks on the file system 123containing the directory has been exhausted. 124.It Bq Er EDQUOT 125The user's quota of inodes on the file system on 126which the node is being created has been exhausted. 127.It Bq Er EROFS 128The named file resides on a read-only file system. 129.It Bq Er EEXIST 130The named file exists. 131.It Bq Er EFAULT 132The 133.Fa path 134argument 135points outside the process's allocated address space. 136.It Bq Er EINVAL 137Creating anything else than a block or character special 138file (or a 139.Em whiteout ) 140is not supported. 141.El 142.Pp 143In addition to the errors returned by the 144.Fn mknod , 145the 146.Fn mknodat 147may fail if: 148.Bl -tag -width Er 149.It Bq Er EBADF 150The 151.Fa path 152argument does not specify an absolute path and the 153.Fa fd 154argument is neither 155.Dv AT_FDCWD 156nor a valid file descriptor open for searching. 157.It Bq Er ENOTDIR 158The 159.Fa path 160argument is not an absolute path and 161.Fa fd 162is neither 163.Dv AT_FDCWD 164nor a file descriptor associated with a directory. 165.El 166.Sh SEE ALSO 167.Xr chmod 2 , 168.Xr mkfifo 2 , 169.Xr stat 2 , 170.Xr umask 2 171.Sh STANDARDS 172The 173.Fn mknodat 174system call follows The Open Group Extended API Set 2 specification. 175.Sh HISTORY 176The 177.Fn mknod 178function appeared in 179.At v4 . 180The 181.Fn mknodat 182system call appeared in 183.Fx 8.0 . 184