MKNOD(2)                        System Calls                        MKNOD(2)
NAME
       mknod, mknodat - make a directory, a special file, or a regular file
SYNOPSIS
       #include <sys/stat.h>       
int mknod(
const char *path, 
mode_t mode, 
dev_t dev);       
int mknodat(int fd, 
const char *path, 
mode_t mode, 
dev_t dev);
DESCRIPTION
       The 
mknod() and 
mknodat() function creates a new file named by the
       path name 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 
S_IFMT bits, which must be
       set to one of the following values:       
S_IFIFO                  fifo special       
S_IFCHR                  character special       
S_IFDIR                  directory       
S_IFBLK                  block special       
S_IFREG                  ordinary file
       The file access permissions are specified in 
mode by the 0007777
       bits, and may be constructed by a bitwise 
OR operation of the
       following values:       
S_ISUID   04000   Set user ID on execution.       
S_ISGID   020#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       S_ISVTX   01000   On directories, restricted deletion
                         flag; on regular files on a UFS file
                         system, do not cache flag.       
S_IRWXU   00700   Read, write, execute by owner.       
S_IRUSR   00400   Read by owner.       
S_IWUSR   00200   Write by owner.       
S_IXUSR   00100   Execute (search if a directory) by
                         owner.       
S_IRWXG   00070   Read, write, execute by group.       
S_IRGRP   00040   Read by group.       
S_IWGRP   00020   Write by group.       
S_IXGRP   00010   Execute by group.       
S_IRWXO   00007   Read, write, execute (search) by others.       
S_IROTH   00004   Read by others.       
S_IWOTH   00002   Write by others       
S_IXOTH   00001   Execute 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.  However, if the 
S_ISGID bit is set in the parent
       directory, then the group 
ID of the file is inherited from the
       parent.  If the group 
ID of the new file does not match the effective
       group 
ID or one of the supplementary group IDs, the 
S_ISGID bit is
       cleared.
       The access permission 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(2)). If 
mode indicates a block or
       character special file, 
dev is a configuration-dependent
       specification of a character or block I/O device. If 
mode does not
       indicate a block special or character special device, 
dev is ignored.
       See 
makedev(3C).
       If 
path is a symbolic link, it is not followed.
       The 
mknodat() function is similar to 
mknod(); however, when 
path is a
       relative path, it is resolved starting at the directory represented
       by the file descriptor 
fd. To start at the current working directory,       
fd may be set to the special value 
AT_FDCWD.
RETURN VALUES
       Upon successful completion, 
mknod() and 
mknodat() return 
0.
       Otherwise, they return 
-1, the new file is not created, and 
errno is
       set to indicate the error.
ERRORS
       The 
mknod() and 
mknodat() functions will fail if:       
EACCES                       A component of the path prefix denies search
                       permission, or write permission is denied on the
                       parent directory.       
EDQUOT                       The directory where the new file entry is being
                       placed cannot be extended because the user's quota of
                       disk blocks on that file system has been exhausted,
                       or the user's quota of inodes on the file system
                       where the file is being created has been exhausted.       
EEXIST                       The named file exists.       
EFAULT                       The 
path argument points to an illegal address.       
EINTR                       A signal was caught during the execution of the                       
mknod() function.       
EINVAL                       An invalid argument exists.       
EIO                       An I/O error occurred while accessing the file
                       system.       
ELOOP                       Too many symbolic links were encountered in
                       translating 
path.       
ENAMETOOLONG                       The length of the 
path argument exceeds {
PATH_MAX},
                       or the length of a 
path component exceeds {
NAME_MAX}
                       while 
_POSIX_NO_TRUNC is in effect.       
ENOENT                       A component of the path prefix specified by 
path does
                       not name an existing directory or 
path is an empty
                       string.       
ENOLINK                       The 
path argument points to a remote machine and the
                       link to that machine is no longer active.       
ENOSPC                       The directory that would contain the new file cannot
                       be extended or the file system is out of file
                       allocation resources.       
ENOTDIR                       A component of the path prefix is not a directory. In
                       addition, when calling 
mknodat(), if 
path is a
                       relative path and 
fd is a valid file descriptor which
                       does not refer to a directory.       
EPERM                       Not all privileges are asserted in the effective set
                       of the calling process.       
EROFS                       The directory in which the file is to be created is
                       located on a read-only file system.
       The 
mknodat() function will fail if:       
EBADF                       The 
path argument is a relative path and 
fd is not a
                       valid open file descriptor or the special value                       
AT_FDCWD.
       The 
mknod() function may fail if:       
ENAMETOOLONG                       Pathname resolution of a symbolic link produced an
                       intermediate result whose length exceeds {
PATH_MAX}.
USAGE
       Applications should use the 
mkdir(2) function to create a directory
       because appropriate permissions are not required and because 
mknod()       might not establish directory entries for the directory itself (
.)
       and the parent directory (
..). The 
mknod() function can be invoked
       only by a privileged user for file types other than FIFO special. The       
mkfifo(3C) function should be used to create FIFOs.
       Doors are created using 
door_create(3C) and can be attached to the
       file system using 
fattach(3C). Symbolic links can be created using       
symlink(2). An endpoint for communication can be created using       
socket(3SOCKET).
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-------------------+
       |  ATTRIBUTE TYPE    |  ATTRIBUTE VALUE  |
       +--------------------+-------------------+
       |Interface Stability | Standard          |
       +--------------------+-------------------+
       |MT-Level            | Async-Signal-Safe |
       +--------------------+-------------------+
SEE ALSO
       chmod(2), 
creat(2), 
exec(2), 
mkdir(2), 
open(2), 
stat(2), 
symlink(2),       
umask(2), 
door_create(3C), 
fattach(3C), 
makedev(3C), 
mkfifo(3C),       
stat.h(3HEAD), 
socket(3SOCKET), 
attributes(7), 
privileges(7),       
standards(7)                              February 19, 2004                     MKNOD(2)