MKFIFO(3C)
NAME
mkfifo − make a FIFO special file
SYNOPSIS
#include <sys/types.h>
#include <sys/stat.h>
int mkfifo (path, mode)
char ∗path;
mode_t mode;
DESCRIPTION
Mkfifo creates a new named pipe, a FIFO (first-in-first-out) file named by the path name pointed to by path. The file permission bits of the new FIFO are initialized from mode. The file permission bits of the mode argument are modified by the process’s file creation mask: for each bit set in the process’s file mode creation mask, the corresponding bit in the new file’s mode is cleared (see umask(2)). Bits in mode other than the file permission bits are ignored.
The FIFO’s owner ID is set to the process’s effective-user-ID. The FIFO’s group ID is set to the group ID of the parent directory if the set-group-ID bit is set on that directory. Otherwise the FIFO’s group ID is set to the process’s effective group ID.
For details of the I/O behavior of pipes see read(2) and write(2).
The following symbolic constants are defined in the <sys/stat.h> header, and should be used to construct the value of the mode argument. The value passed should be the bitwise inclusive OR of the desired permissions:
S_IRUSR Read by owner.
S_IWUSR Write by owner.
S_IRGRP Read by group.
S_IWGRP Write by group.
S_IROTH Read by other users.
S_IWOTH Write by other users.
RETURN VALUE
Upon successful completion a value of zero is returned. Otherwise, a value of −1 is returned, no FIFO is created, and errno is set to indicate the error.
ERRORS
Mkfifo fails and the new file is not created if one or more of the following is true:
[ENOSPC] Not enough space on the file system.
[ENOTDIR] A component of the path prefix is not a directory.
[ENOENT] A component of the path prefix does not exist.
[EROFS] The directory in which the file is being created is located in a read-only file system.
[EACCES] A component of the path prefix denies search permission.
[EEXIST] The named file exists.
[EFAULT] Path points outside the process’s allocated address space. The reliable detection of this error is implementation dependent.
[ENOENT] Path is null.
[ENAMETOOLONG]
The length of the specified path name exceeds PATH_MAX bytes, or the length of a component of the path name exceeds NAME_MAX bytes while _POSIX_NO_TRUNC is in effect.
[ELOOP] Too many symbolic links are encountered in translating the path name.
SEE ALSO
mknod(1M), chmod(2), exec(2), mknod(2), pipe(2), stat(2), umask(2), cdf(4), fs(4), mknod(4), stat(5).
AUTHOR
Mkfifo was developed by HP and conforms to the IEEE Standard POSIX 1003.1-1988.
STANDARDS CONFORMANCE
mkfifo: XPG3, POSIX.1, FIPS 151-1
Hewlett-Packard Company — HP-UX Release 7.0: Sept 1989