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: src/lib/libc/sys/mknod.2,v 1.18 2008/04/16 13:03:12 kib Exp $ 30.\" 31.Dd August 6, 2010 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 ENOSPC 112The directory in which the entry for the new node is being placed 113cannot be extended because there is no space left on the file 114system containing the directory. 115.It Bq Er ENOSPC 116There are no free inodes on the file system on which the 117node is being created. 118.It Bq Er EDQUOT 119The directory in which the entry for the new node 120is being placed cannot be extended because the 121user's quota of disk blocks on the file system 122containing the directory has been exhausted. 123.It Bq Er EDQUOT 124The user's quota of inodes on the file system on 125which the node is being created has been exhausted. 126.It Bq Er EROFS 127The named file resides on a read-only file system. 128.It Bq Er EEXIST 129The named file exists. 130.It Bq Er EFAULT 131The 132.Fa path 133argument 134points outside the process's allocated address space. 135.It Bq Er EINVAL 136Creating anything else than a block or character special 137file (or a 138.Em whiteout ) 139is not supported. 140.El 141.Pp 142In addition to the errors returned by the 143.Fn mknod , 144the 145.Fn mknodat 146may fail if: 147.Bl -tag -width Er 148.It Bq Er EBADF 149The 150.Fa path 151argument does not specify an absolute path and the 152.Fa fd 153argument is neither 154.Dv AT_FDCWD 155nor a valid file descriptor open for searching. 156.It Bq Er ENOTDIR 157The 158.Fa path 159argument is not an absolute path and 160.Fa fd 161is neither 162.Dv AT_FDCWD 163nor a file descriptor associated with a directory. 164.El 165.Sh SEE ALSO 166.Xr chmod 2 , 167.Xr mkfifo 2 , 168.Xr stat 2 , 169.Xr umask 2 170.Sh STANDARDS 171The 172.Fn mknodat 173system call follows The Open Group Extended API Set 2 specification. 174.Sh HISTORY 175The 176.Fn mknod 177function appeared in 178.At v6 . 179The 180.Fn mknodat 181system call appeared in 182.Dx 2.7 . 183