MKNOD(2)

NAME
mknod - make a special file

SYNOPSIS
#include <sys/stat.h>
mknod(path, mode, dev)
char *path;
int mode, dev;

DESCRIPTION
Mknod creates a new file whose name is path. The mode of the new file (including special file bits) is initialized from mode. (The protection part of the mode is modified by the process's mode mask; see umask(2)). The first block pointer of the i-node is initialized from dev and is used to specify which device the special file refers to.

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.

Mknod may be invoked only by the super-user, unless mode is type S_IFIFO (named pipe, refer to /usr/include/sys/stat.h), in which case anyone can make the call. Mknod cannot be used to create a directory (use mkdir).

The file thus created will inherit the parent directory's group id. The setgid option will only be set if the group of the file lies in the creating process's group set, otherwise the option will be automatically turned off.

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

ERRORS
Mknod will fail and the file mode will be unchanged if:

[EPERM]
    The process's effective user ID is not super-user.

[EPERM]
    The pathname contains a character with the high-order bit set.

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

[ENOENT]
    A component of the path prefix does not exist.

[EROFS]
    The named file resides on a read-only file system.

[EEXIST]
    The named file exists.

[EFAULT]
    Path points outside the process's allocated address space.

[ELOOP]
    Too many symbolic links were encountered in translating the pathname.

[ENOENT]
    The path name is too long.

[EACCES]
    A component of the path prefix denies search permission.

[ENOSPC]
    The directory in which the entry for the new file is being placed cannot be extended because there is no space left on the file system containing the directory.

[ENOSPC]
    There are no free inodes on the file system on which the file is being created.

[EIO]
    An I/O error occurred while reading from or writing to the file system.

[EISDIR]
    Path is a directory.

SEE ALSO
chmod(2), stat(2), umask(2)