mknod(S) 6 January 1993 mknod(S) Name mknod - make a directory or a special or ordinary file or a FIFO Syntax cc ... -lc #include <sys/types.h> #include <sys/stat.h> int mknod (path, mode, dev) char *path; int mode, dev; Description The mknod system call creates a new file named by the pathname pointed to by path. The mode of the new file is initialized from mode. Where the value of mode is interpreted as follows: 0170000 file type; one of the following: 0010000 fifo special 0020000 character special 0040000 directory 0060000 block special 0100000 ordinary file 0000000 out-of-service inode 0004000 set user ID on execution 00020#0 set group ID on execution if # is 7, 5, 3, or 1 enable mandatory file/record locking if # is 6, 4, 2, or 0 0001000 save text image after execution 0000777 access permissions; constructed from the following: 0000400 read by owner 0000200 write by owner 0000100 execute (search on directory) by owner 0000070 read, write, execute (search) by group 0000007 read, write, execute (search) by others Symbolic constants defining the value of the argument mode are in the <sys/stat.h> header file and should be used to construct mode. The value of the argument mode should be the logical OR of the values of the desired permissions: Name Description SENFMT record-locking enforced SIFBLK block-special SIFCHR character-special SIFDIR directory node SIFIFO FIFO-special SIFMT file type; one of the following: SIFREG ordinary-file SIRGRP read by group SIROTH read by others (that is, anyone else) SIRUSR read by owner SISGID set group-ID on execution SISUID set user-ID on execution SISVTX (reserved) SIWGRP write by group SIWOTH write by others SIWUSR write by owner SIXGRP execute (search) by group SIXUSR execute (search) by owner SIXOTH execute (search) by others The owner ID of the file is set to the effective user ID of the process. The group ID of the file is set to the effective group ID of the process. Values of mode other than those above are undefined and should not be used. The low-order 9 bits of mode are modified by the process's file mode creation mask: all bits set in the process's file mode creation mask are cleared (see umask(S)). If mode indicates a block or character special file, dev is a configuration-dependent specification of a charac- ter or block I/O device. If mode does not indicate a block special or character special device, dev is ignored. The mknod routine may be invoked only by the super user for file types other than FIFO special. The mknod routine fails and the new file is not created if one or more of the following is true: [EEXIST] The named file exists. [EFAULT] path points outside the allocated address space of the process. [EINTR] A signal was caught during the mknod system call. [EMULTIHOP] Components of path require hopping to multiple remote ma- chines. [ENOENT] A component of the path prefix does not exist. [ENOTDIR] A component of the path prefix is not a directory. [ENOLINK] path points to a remote machine and the link to that ma- chine is no longer active. [ENOSPC] No space is available. [EPERM] The effective user ID of the process is not super user. [EROFS] The directory in which the file is to be created is located on a read-only file system. Diagnostics Upon successful completion a value of 0 is returned. Otherwise, a value of -1 is returned, and errno is set to indicate the error. Warning If mknod is used to create a device in a remote directory (Remote File Sharing), the major and minor device numbers are interpreted by the server. See also chmod(S), exec(S), fs(F), mkdir(C), umask(S) Standards conformance mknod is conformant with: AT&T SVID Issue 2, but has been withdrawn from XPG3