Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ mknod(2) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

mkdir(1)

chmod(2)

exec(2)

umask(2)

mkfifo(3C)

fs(4)

stat(5)

types(5)

mknod(2)                                                           mknod(2)

NAME
     mknod - make directory, special file, or ordinary file

SYNOPSIS
     #include <sys/types.h>
     #include <sys/stat.h>

     int mknod(const char *path, modet mode, devt dev);

DESCRIPTION
     mknod() creates a new file named by the pathname pointed to by path.
     The file type and permissions of the new file are initialized from
     mode.

     The file type is specified in mode by the SIFMT bits, which must be
     set to one of the following values:

     SIFIFO   fifo special
     SIFCHR   character-oriented file
     SIFDIR   directory
     SIFBLK   block-oriented file
     SIFREG   ordinary file

     The only portable use of mknod() is to create a FIFO-special file. If
     mode is not SIFIFO or dev is not 0, the behavior of mknod() is
     unspecified.

     The permissions for the new file are OR-ed into the mode argument, and
     may be selected from any combination of the following symbolic con-
     stants:

     SISUID   04000   Set user ID on execution.
     SISGID   020#0   Set group ID on execution if # is 7, 5, 3, or 1.
                       Enable file/record locking if # is 6, 4, 2, or 0
     SISVTX   01000   Save text image after execution.
     SIRWXU   00700   Read, write, execute by owner.
     SIRUSR   00400   Read by owner.
     SIWUSR   00200   Write by owner.
     SIXUSR   00100   Execute or search by owner.
     SIRWXG   00070   Read, write, execute by group.
     SIRGRP   00040   Read by group.
     SIWGRP   00020   Write by group.
     SIXGRP   00010   Execute by group.
     SIRWXO   00007   Read, write, execute or search by others.
     SIROTH   00004   Read by others.
     SIWOTH   00002   Write by others
     SIXOTH   00001   Execute by others.

     The owner ID of the file is set to the effective user ID of the pro-
     cess. The group ID of the file is set to the effective group ID of the
     process. However, if the SISGID bit is set in the parent directory,
     then the group ID of the file is inherited from the parent. If the



Page 1                       Reliant UNIX 5.44                Printed 11/98

mknod(2)                                                           mknod(2)

     group ID of the new file does not match the effective group ID or one
     of the supplementary group IDs, the SISGID bit is cleared.

     The access permission bits of mode are modified by the process' file
     mode creation mask: all bits set in the process' file mode creation
     mask are cleared [see umask(2)]. If mode indicates a block or char-
     acter-oriented file, dev is a configuration-dependent specification of
     this file. If mode does not indicate a block or character-oriented
     device, dev is ignored.

     Upon successful completion, mknod() marks for update the statime,
     stctime and stmtime fields of the file. Also, the stctime and
     stmtime fields of the directory that contains the new entry are
     marked for update.

     Only a process with appropriate privileges may invoke mknod() for file
     types other than FIFO-special.

     If path is a symbolic link, it is not followed.

ERRORS
     The following error code descriptions are function-specific. You will
     find a general description in introprm2(2) or in errno(5).

     mknod() fails and creates no new file if one or more of the following
     are true:

     EEXIST        The named file exists.

     EINVAL        dev is invalid.

     EFAULT        path points outside the allocated address space of the
                   process.

     ELOOP         Too many symbolic links were encountered in translating
                   path.

     EMULTIHOP     Components of path require hopping to multiple remote
                   machines and the file system type does not allow it.

     ENAMETOOLONG  The length of the path argument exceeds PATHMAX or the
                   length of a path component exceeds NAMEMAX.

     ENOTDIR       A component of the path prefix is not a directory.

     ENOENT        A component of the path prefix does not exist or is a
                   null pathname.

     EROFS         The directory in which the file is to be created is
                   located on a read-only file system.

     EINTR         A signal was caught during the mknod() system call.


Page 2                       Reliant UNIX 5.44                Printed 11/98

mknod(2)                                                           mknod(2)

     ENOLINK       path points to a remote machine and the link to that
                   machine is no longer active.

     EPERM         The invoking process does not have appropriate privi-
                   leges and the file type is not FIFO-special.

     EACCES        A component of the path prefix denies search permission,
                   or write permission is denied on the parent directory.

     EIO           An I/O error occurred while accessing the file system.

     ENOSPC        The directory that would contain the new file cannot be
                   extended or the file system is out of file allocation
                   resources.

     The mknod() function may fail if:

     ENAMETOOLONG  Pathname resolution of a symbolic link produced an
                   intermediate result whose length exceeds PATHMAX.

RESULT
     Upon successful completion a value of 0 is returned. Otherwise, a
     value of -1 is returned and errno is set to indicate the error.

SEE ALSO
     mkdir(1), chmod(2), exec(2), umask(2), mkfifo(3C), fs(4), stat(5),
     types(5).



























Page 3                       Reliant UNIX 5.44                Printed 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026