mknod --
(XENIX) make a directory, or a special or ordinary file
Synopsis
#include <sys/types.h>
#include <sys/stat.h>
int mknod(const char path, mode_t mode, dev_t dev);
Description
mknod 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
S_IFNAM
name special file
The file access permissions are specified in
mode
by the
0007777 bits, and may be constructed by an OR 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
Save text image after execution.
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.
Values of
mode
other than those above are undefined
and should not be used.
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)).
For block and character special files, dev is the
special file's device number.
For name special files,
dev
is the file type of the name file, either a XENIX shared
data file or a XENIX semaphore.
Otherwise,
dev
is ignored.
mknod
may be invoked only by the privileged user for file types other than
FIFO
special.
mknod
fails and creates no new file
if one or more of the following are true:
EEXIST
The named file exists.
EINVAL
Invalid arg value.
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.
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.
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.
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.
ENOSPC
No space is available.
EINTR
A signal was caught during the mknod system call.
ENOLINK
path points to a remote machine and the link
to that machine is no longer active.
Return values
Upon successful completion a value of 0 is returned.
Otherwise, a value of -1 is returned and errno
is set to indicate the error.