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