diff options
Diffstat (limited to 'man2/mknod.2')
-rw-r--r-- | man2/mknod.2 | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/man2/mknod.2 b/man2/mknod.2 new file mode 100644 index 000000000..e59505fe0 --- /dev/null +++ b/man2/mknod.2 @@ -0,0 +1,177 @@ +.\" 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 +.\" Modified 2004-06-23 by Michael Kerrisk <mtk16@ext.canterbury.ac.nz> +.\" +.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 +.B mknod +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 +process. If the directory containing the node has the set group ID +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" +.BR mknod +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 +capability); also returned if the filesystem containing +.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" +SVr4 (but the call requires privilege and is thus not in POSIX), +4.4BSD. 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. +.SH NOTES +POSIX 1003.1-2001 says: "The only portable use of +.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 +.BR mkdir , +and FIFOs with +.BR mkfifo . +.\" Unix domain sockets with .BR socket " (and " bind ), + +There are many infelicities in the protocol underlying NFS. Some +of these affect +.BR mknod . +.SH "SEE ALSO" +.BR fcntl (2), +.BR mkdir (2), +.BR mount (2), +.BR path_resolution (2), +.BR socket (2), +.BR stat (2), +.BR umask (2), +.BR unlink (2), +.BR mkfifo (3) |