Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


mknod(2) — Linux manual page

NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |VERSIONS |STANDARDS |HISTORY |NOTES |SEE ALSO |COLOPHON

mknod(2)                   System Calls Manualmknod(2)

NAME        top

       mknod, mknodat - create a special or ordinary file

LIBRARY        top

       Standard C library (libc,-lc)

SYNOPSIS        top

#include <sys/stat.h>int mknod(const char *path, mode_tmode, dev_tdev);#include <fcntl.h>/* Definition of AT_* constants */#include <sys/stat.h>int mknodat(intdirfd, const char *path, mode_tmode, dev_tdev);   Feature Test Macro Requirements for glibc (seefeature_test_macros(7)):mknod():           _XOPEN_SOURCE >= 500               || /* Since glibc 2.19: */ _DEFAULT_SOURCE               || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

DESCRIPTION        top

       The system callmknod() creates a filesystem node (file, device       special file, or named pipe) namedpath, with attributes specified       bymode anddev.       Themode argument specifies both the file mode 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 zero or more of the       file mode bits listed ininode(7).       The file mode is modified by the process'sumask in the usual way:       in the absence of a default ACL, the permissions of the created       node are (mode & ~umask).       The file type must be one ofS_IFREG,S_IFCHR,S_IFBLK,S_IFIFO,       orS_IFSOCKto specify a regular 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 typeS_IFREG.)       If the file type isS_IFCHRorS_IFBLK, thendev specifies the       major and minor numbers of the newly created device special file       (makedev(3) may be useful to build the value fordev); otherwise       it is ignored.       Ifpath already exists, or is a symbolic link, this call fails       with anEEXISTerror.       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.mknodat()       Themknodat() system call operates in exactly the same way asmknod(), except for the differences described here.       Ifpath is relative, then it is interpreted relative to the       directory referred to by the file descriptordirfd (rather than       relative to the current working directory of the calling process,       as is done bymknod() for a relative pathname).       Ifpath is relative anddirfd is the special valueAT_FDCWD, thenpath is interpreted relative to the current working directory of       the calling process (likemknod()).       Ifpath is absolute, thendirfd is ignored.       Seeopenat(2) for an explanation of the need formknodat().

RETURN VALUE        top

mknod() andmknodat() return zero on success.  On error, -1 is       returned anderrno is set to indicate the error.

ERRORS        top

EACCESThe parent directory does not allow write permission to the              process, or one of the directories in the path prefix ofpath did not allow search permission.  (See alsopath_resolution(7).)EBADF(mknodat())path is relative butdirfd is neitherAT_FDCWD              nor a valid file descriptor.EDQUOTThe user's quota of disk blocks or inodes on the filesystem              has been exhausted.EEXISTpath already exists.  This includes the case wherepath is              a symbolic link, dangling or not.EFAULTpath points outside your accessible address space.EINVALmode requested creation of something other than a regular              file, device special file, FIFO or socket.ELOOPToo many symbolic links were encountered in resolvingpath.ENAMETOOLONGpath was too long.ENOENTA directory component inpath does not exist or is a              dangling symbolic link.ENOMEMInsufficient kernel memory was available.ENOSPCThe device containingpath has no room for the new node.ENOTDIR              A component used as a directory inpath is not, in fact, a              directory.ENOTDIR              (mknodat())path is relative anddirfd is a file descriptor              referring to a file other than a directory.EPERMmode 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 theCAP_MKNODcapability); also returned if the filesystem              containingpath does not support the type of node              requested.EROFSpath refers to a file on a read-only filesystem.

VERSIONS        top

       POSIX.1-2001 says: "The only portable use ofmknod() is to create       a FIFO-special file.  Ifmode is notS_IFIFOordev is not 0, the       behavior ofmknod() is unspecified."  However, nowadays one should       never usemknod() for this purpose; one should usemkfifo(3), a       function especially defined for this purpose.       Under Linux,mknod() cannot be used to create directories.  One       should make directories withmkdir(2).

STANDARDS        top

       POSIX.1-2008.

HISTORY        top

mknod()              SVr4, 4.4BSD, POSIX.1-2001 (but see VERSIONS).mknodat()              Linux 2.6.16, glibc 2.4.  POSIX.1-2008.

NOTES        top

       There are many infelicities in the protocol underlying NFS.  Some       of these affectmknod() andmknodat().

SEE ALSO        top

mknod(1),chmod(2),chown(2),fcntl(2),mkdir(2),mount(2),socket(2),stat(2),umask(2),unlink(2),makedev(3),mkfifo(3),acl(5),path_resolution(7)

COLOPHON        top

       This page is part of theman-pages (Linux kernel and C library       user-space interface documentation) project.  Information about       the project can be found at        ⟨https://www.kernel.org/doc/man-pages/⟩.  If you have a bug report       for this manual page, see       ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.       This page was obtained from the tarball man-pages-6.15.tar.gz       fetched from       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on       2025-08-11.  If you discover any rendering problems in this HTML       version of the page, or you believe there is a better or more up-       to-date source for the page, or you have corrections or       improvements to the information in this COLOPHON (which isnot       part of the original manual page), send a mail to       man-pages@man7.orgLinux man-pages 6.15            2025-05-17mknod(2)

Pages that refer to this page:mknod(1)F_NOTIFY(2const)mkdir(2)open(2)syscalls(2)unlink(2)dev_t(3type)makedev(3)mkfifo(3)remove(3)intro(4)fstab(5)proc_pid_attr(5)capabilities(7)inode(7)signal-safety(7)mount(8)xfs_db(8)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp