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