.nf
.B #include <sys/types.h>
.B #include <sys/stat.h>
-.PP
+.P
.BI "int mkfifo(const char *" pathname ", mode_t " mode );
-.PP
+.P
.BR "#include <fcntl.h> " "/* Definition of AT_* constants */"
.B #include <sys/stat.h>
-.PP
+.P
.BI "int mkfifoat(int " dirfd ", const char *" pathname ", mode_t " mode );
.fi
-.PP
+.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
-.PP
+.P
.BR mkfifoat ():
.nf
Since glibc 2.10:
It is modified by the
process's \fBumask\fP in the usual way: the permissions of the created
file are \fB(\fP\fImode\fP\fB & \[ti]umask)\fP.
-.PP
+.P
A FIFO special file is similar to a pipe, except that it is created
in a different way.
Instead of being an anonymous communications
channel, a FIFO special file is entered into the filesystem by
calling
.BR mkfifo ().
-.PP
+.P
Once you have created a FIFO special file in this way, any process can
open it for reading or writing, in the same way as an ordinary file.
However, it has to be open at both ends simultaneously before you can
function operates in exactly the same way as
.BR mkfifo (),
except for the differences described here.
-.PP
+.P
If the pathname given in
.I pathname
is relative, then it is interpreted relative to the directory
the calling process, as is done by
.BR mkfifo ()
for a relative pathname).
-.PP
+.P
If
.I pathname
is relative and
is interpreted relative to the current working
directory of the calling process (like
.BR mkfifo ()).
-.PP
+.P
If
.I pathname
is absolute, then
.I dirfd
is ignored.
-.PP
+.P
See
.BR openat (2)
for an explanation of the need for