2004-11-03 13:51:07 +00:00
|
|
|
.\" Hey Emacs! This file is -*- nroff -*- source.
|
|
|
|
.\"
|
|
|
|
.\" This manpage is Copyright (C) 1992 Drew Eckhardt;
|
|
|
|
.\" 1993 Michael Haardt
|
|
|
|
.\" 1993,1994 Ian Jackson.
|
|
|
|
.\" You may distribute it under the terms of the GNU General
|
|
|
|
.\" Public Licence. It comes with NO WARRANTY.
|
|
|
|
.\"
|
|
|
|
.\" Modified 1996-08-18 by urs
|
|
|
|
.\" Modified 2003-04-23 by Michael Kerrisk
|
2004-11-03 14:43:40 +00:00
|
|
|
.\" Modified 2004-06-23 by Michael Kerrisk <mtk-manpages@gmx.net>
|
2004-11-03 13:51:07 +00:00
|
|
|
.\"
|
|
|
|
.TH MKNOD 2 2004-06-23 "Linux 2.6.7" "Linux Programmer's Manual"
|
|
|
|
.SH NAME
|
|
|
|
mknod \- create a special or ordinary file
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.nf
|
|
|
|
.B #include <sys/types.h>
|
|
|
|
.B #include <sys/stat.h>
|
|
|
|
.B #include <fcntl.h>
|
|
|
|
.B #include <unistd.h>
|
|
|
|
.sp
|
|
|
|
.BI "int mknod(const char *" pathname ", mode_t " mode ", dev_t " dev );
|
|
|
|
.fi
|
|
|
|
.SH DESCRIPTION
|
|
|
|
The system call
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR mknod ()
|
2004-11-03 13:51:07 +00:00
|
|
|
creates a filesystem node (file, device special file or
|
|
|
|
named pipe) named
|
|
|
|
.IR pathname ,
|
|
|
|
with attributes specified by
|
|
|
|
.I mode
|
|
|
|
and
|
|
|
|
.IR dev .
|
|
|
|
|
|
|
|
The
|
|
|
|
.I mode
|
|
|
|
argument specifies both the permissions to use and the type of node
|
|
|
|
to be created.
|
|
|
|
It should be a combination (using bitwise OR) of one of the file types
|
|
|
|
listed below and the permissions for the new node.
|
|
|
|
|
|
|
|
The permissions are modified by the process's
|
|
|
|
.BR umask
|
|
|
|
in the usual way: the permissions of the created node are
|
|
|
|
.BR "(mode & ~umask)" .
|
|
|
|
|
|
|
|
The file type must be one of
|
|
|
|
.BR S_IFREG ,
|
|
|
|
.BR S_IFCHR ,
|
|
|
|
.BR S_IFBLK ,
|
|
|
|
.BR S_IFIFO
|
|
|
|
or
|
|
|
|
.BR S_IFSOCK
|
|
|
|
.\" (S_IFSOCK since Linux 1.2.4)
|
|
|
|
to specify a normal file (which will be created empty), character
|
|
|
|
special file, block special file, FIFO (named pipe), or Unix domain socket,
|
|
|
|
respectively.
|
|
|
|
(Zero file type is equivalent to type S_IFREG.)
|
|
|
|
|
|
|
|
If the file type is
|
|
|
|
.BR S_IFCHR " or " S_IFBLK
|
|
|
|
then
|
|
|
|
.I dev
|
|
|
|
specifies the major and minor numbers of the newly created device
|
|
|
|
special file; otherwise it is ignored.
|
|
|
|
|
|
|
|
If
|
|
|
|
.I pathname
|
|
|
|
already exists, or is a symbolic link, this call fails with an EEXIST error.
|
|
|
|
|
|
|
|
The newly created node will be owned by the effective user ID of the
|
2005-07-18 16:09:29 +00:00
|
|
|
process. If the directory containing the node has the set-group-ID
|
2004-11-03 13:51:07 +00:00
|
|
|
bit set, or if the filesystem is mounted with BSD group semantics, the
|
|
|
|
new node will inherit the group ownership from its parent directory;
|
|
|
|
otherwise it will be owned by the effective group ID of the process.
|
|
|
|
.SH "RETURN VALUE"
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR mknod ()
|
2004-11-03 13:51:07 +00:00
|
|
|
returns zero on success, or \-1 if an error occurred (in which case,
|
|
|
|
.I errno
|
|
|
|
is set appropriately).
|
|
|
|
.SH ERRORS
|
|
|
|
.TP
|
|
|
|
.B EACCES
|
|
|
|
The parent directory does not allow write permission to the process,
|
|
|
|
or one of the directories in the path prefix of
|
|
|
|
.IR pathname
|
|
|
|
did not allow search permission.
|
|
|
|
(See also
|
|
|
|
.BR path_resolution (2).)
|
|
|
|
.TP
|
|
|
|
.B EEXIST
|
|
|
|
.I pathname
|
|
|
|
already exists.
|
|
|
|
.TP
|
|
|
|
.B EFAULT
|
|
|
|
.IR pathname " points outside your accessible address space."
|
|
|
|
.TP
|
|
|
|
.B EINVAL
|
|
|
|
.I mode
|
|
|
|
requested creation of something other than a normal file, device
|
|
|
|
special file, FIFO or socket.
|
|
|
|
.TP
|
|
|
|
.B ELOOP
|
|
|
|
Too many symbolic links were encountered in resolving
|
|
|
|
.IR pathname .
|
|
|
|
.TP
|
|
|
|
.B ENAMETOOLONG
|
|
|
|
.IR pathname " was too long."
|
|
|
|
.TP
|
|
|
|
.B ENOENT
|
|
|
|
A directory component in
|
|
|
|
.I pathname
|
|
|
|
does not exist or is a dangling symbolic link.
|
|
|
|
.TP
|
|
|
|
.B ENOMEM
|
|
|
|
Insufficient kernel memory was available.
|
|
|
|
.TP
|
|
|
|
.B ENOSPC
|
|
|
|
The device containing
|
|
|
|
.I pathname
|
|
|
|
has no room for the new node.
|
|
|
|
.TP
|
|
|
|
.B ENOTDIR
|
|
|
|
A component used as a directory in
|
|
|
|
.I pathname
|
|
|
|
is not, in fact, a directory.
|
|
|
|
.TP
|
|
|
|
.B EPERM
|
|
|
|
.I mode
|
|
|
|
requested creation of something other than a regular file,
|
|
|
|
FIFO (named pipe), or Unix domain socket, and the caller
|
|
|
|
is not privileged (Linux: does not have the
|
|
|
|
.B CAP_MKNOD
|
2005-05-18 09:39:52 +00:00
|
|
|
capability);
|
|
|
|
.\" For Unix domain sockets and regular files, EPERM is only returned in
|
|
|
|
.\" Linux 2.2 and earlier; in Linux 2.4 and later, unprivileged can
|
|
|
|
.\" use mknod() to make these files.
|
|
|
|
also returned if the filesystem containing
|
2004-11-03 13:51:07 +00:00
|
|
|
.I pathname
|
|
|
|
does not support the type of node requested.
|
|
|
|
.TP
|
|
|
|
.B EROFS
|
|
|
|
.I pathname
|
|
|
|
refers to a file on a read-only filesystem.
|
|
|
|
.SH "CONFORMING TO"
|
2006-08-03 13:57:17 +00:00
|
|
|
SVr4, 4.4BSD, POSIX.1-2001 (but see below).
|
|
|
|
.\" The Linux version differs from the SVr4 version in that it
|
|
|
|
.\" does not require root permission to create pipes, also in that no
|
|
|
|
.\" EMULTIHOP, ENOLINK, or EINTR error is documented.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NOTES
|
2006-08-03 13:57:17 +00:00
|
|
|
POSIX.1-2001 says: "The only portable use of
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR mknod ()
|
|
|
|
is to create a FIFO-special file. If
|
|
|
|
.I mode
|
|
|
|
is not S_IFIFO or
|
|
|
|
.I dev
|
|
|
|
is not 0, the behavior of
|
|
|
|
.BR mknod ()
|
|
|
|
is unspecified."
|
|
|
|
|
|
|
|
Under Linux, this call cannot be used to create directories.
|
|
|
|
One should make directories with
|
2005-11-02 13:55:25 +00:00
|
|
|
.BR mkdir (2),
|
2004-11-03 13:51:07 +00:00
|
|
|
and FIFOs with
|
2005-11-02 13:55:25 +00:00
|
|
|
.BR mkfifo (2).
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" Unix domain sockets with .BR socket " (and " bind ),
|
|
|
|
|
|
|
|
There are many infelicities in the protocol underlying NFS. Some
|
|
|
|
of these affect
|
2005-10-19 06:54:38 +00:00
|
|
|
.BR mknod ().
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH "SEE ALSO"
|
|
|
|
.BR fcntl (2),
|
|
|
|
.BR mkdir (2),
|
2006-04-05 05:14:55 +00:00
|
|
|
.BR mknodat (2),
|
2004-11-03 13:51:07 +00:00
|
|
|
.BR mount (2),
|
|
|
|
.BR path_resolution (2),
|
|
|
|
.BR socket (2),
|
|
|
|
.BR stat (2),
|
|
|
|
.BR umask (2),
|
|
|
|
.BR unlink (2),
|
|
|
|
.BR mkfifo (3)
|