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