2004-11-03 13:51:07 +00:00
|
|
|
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
|
2007-06-20 22:33:04 +00:00
|
|
|
.TH "MKFIFO" 3P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
|
2004-11-03 13:51:07 +00:00
|
|
|
.\" mkfifo
|
2007-09-20 06:03:25 +00:00
|
|
|
.SH PROLOG
|
|
|
|
This manual page is part of the POSIX Programmer's Manual.
|
|
|
|
The Linux implementation of this interface may differ (consult
|
|
|
|
the corresponding Linux manual page for details of Linux behavior),
|
|
|
|
or the interface may not be implemented on Linux.
|
2004-11-03 13:51:07 +00:00
|
|
|
.SH NAME
|
|
|
|
mkfifo \- make a FIFO special file
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.LP
|
|
|
|
\fB#include <sys/stat.h>
|
|
|
|
.br
|
|
|
|
.sp
|
|
|
|
int mkfifo(const char *\fP\fIpath\fP\fB, mode_t\fP \fImode\fP\fB);
|
|
|
|
.br
|
|
|
|
\fP
|
|
|
|
.SH DESCRIPTION
|
|
|
|
.LP
|
|
|
|
The \fImkfifo\fP() function shall create a new FIFO special file named
|
|
|
|
by the pathname pointed to by \fIpath\fP. The file
|
|
|
|
permission bits of the new FIFO shall be initialized from \fImode\fP.
|
|
|
|
The file permission bits of the \fImode\fP argument shall
|
|
|
|
be modified by the process' file creation mask.
|
|
|
|
.LP
|
|
|
|
When bits in \fImode\fP other than the file permission bits are set,
|
|
|
|
the effect is implementation-defined.
|
|
|
|
.LP
|
|
|
|
If \fIpath\fP names a symbolic link, \fImkfifo\fP() shall fail and
|
|
|
|
set \fIerrno\fP to [EEXIST].
|
|
|
|
.LP
|
|
|
|
The FIFO's user ID shall be set to the process' effective user ID.
|
|
|
|
The FIFO's group ID shall be set to the group ID of the
|
|
|
|
parent directory or to the effective group ID of the process. Implementations
|
|
|
|
shall provide a way to initialize the FIFO's group ID
|
|
|
|
to the group ID of the parent directory. Implementations may, but
|
|
|
|
need not, provide an implementation-defined way to initialize the
|
|
|
|
FIFO's group ID to the effective group ID of the calling process.
|
|
|
|
.LP
|
|
|
|
Upon successful completion, \fImkfifo\fP() shall mark for update the
|
|
|
|
\fIst_atime\fP, \fIst_ctime\fP, and \fIst_mtime\fP
|
|
|
|
fields of the file. Also, the \fIst_ctime\fP and \fIst_mtime\fP fields
|
|
|
|
of the directory that contains the new entry shall be
|
|
|
|
marked for update.
|
|
|
|
.SH RETURN VALUE
|
|
|
|
.LP
|
|
|
|
Upon successful completion, 0 shall be returned. Otherwise, -1 shall
|
|
|
|
be returned, no FIFO shall be created, and \fIerrno\fP
|
|
|
|
shall be set to indicate the error.
|
|
|
|
.SH ERRORS
|
|
|
|
.LP
|
|
|
|
The \fImkfifo\fP() function shall fail if:
|
|
|
|
.TP 7
|
|
|
|
.B EACCES
|
|
|
|
A component of the path prefix denies search permission, or write
|
|
|
|
permission is denied on the parent directory of the FIFO to
|
|
|
|
be created.
|
|
|
|
.TP 7
|
|
|
|
.B EEXIST
|
|
|
|
The named file already exists.
|
|
|
|
.TP 7
|
|
|
|
.B ELOOP
|
|
|
|
A loop exists in symbolic links encountered during resolution of the
|
|
|
|
\fIpath\fP argument.
|
|
|
|
.TP 7
|
|
|
|
.B ENAMETOOLONG
|
|
|
|
The length of the \fIpath\fP argument exceeds {PATH_MAX} or a pathname
|
|
|
|
component is longer than {NAME_MAX}.
|
|
|
|
.TP 7
|
|
|
|
.B ENOENT
|
|
|
|
A component of the path prefix specified by \fIpath\fP does not name
|
|
|
|
an existing directory or \fIpath\fP is an empty
|
|
|
|
string.
|
|
|
|
.TP 7
|
|
|
|
.B ENOSPC
|
|
|
|
The directory that would contain the new file cannot be extended or
|
|
|
|
the file system is out of file-allocation resources.
|
|
|
|
.TP 7
|
|
|
|
.B ENOTDIR
|
|
|
|
A component of the path prefix is not a directory.
|
|
|
|
.TP 7
|
|
|
|
.B EROFS
|
|
|
|
The named file resides on a read-only file system.
|
|
|
|
.sp
|
|
|
|
.LP
|
|
|
|
The \fImkfifo\fP() function may fail if:
|
|
|
|
.TP 7
|
|
|
|
.B ELOOP
|
|
|
|
More than {SYMLOOP_MAX} symbolic links were encountered during resolution
|
|
|
|
of the \fIpath\fP argument.
|
|
|
|
.TP 7
|
|
|
|
.B ENAMETOOLONG
|
|
|
|
As a result of encountering a symbolic link in resolution of the \fIpath\fP
|
|
|
|
argument, the length of the substituted pathname
|
|
|
|
string exceeded {PATH_MAX}.
|
|
|
|
.sp
|
|
|
|
.LP
|
|
|
|
\fIThe following sections are informative.\fP
|
|
|
|
.SH EXAMPLES
|
|
|
|
.SS Creating a FIFO File
|
|
|
|
.LP
|
|
|
|
The following example shows how to create a FIFO file named \fB/home/cnd/mod_done\fP,
|
|
|
|
with read/write permissions for owner,
|
|
|
|
and with read permissions for group and others.
|
|
|
|
.sp
|
|
|
|
.RS
|
|
|
|
.nf
|
|
|
|
|
|
|
|
\fB#include <sys/types.h>
|
|
|
|
#include <sys/stat.h>
|
|
|
|
.sp
|
|
|
|
|
|
|
|
int status;
|
|
|
|
\&...
|
|
|
|
status = mkfifo("/home/cnd/mod_done", S_IWUSR | S_IRUSR |
|
|
|
|
S_IRGRP | S_IROTH);
|
|
|
|
\fP
|
|
|
|
.fi
|
|
|
|
.RE
|
|
|
|
.SH APPLICATION USAGE
|
|
|
|
.LP
|
|
|
|
None.
|
|
|
|
.SH RATIONALE
|
|
|
|
.LP
|
|
|
|
The syntax of this function is intended to maintain compatibility
|
|
|
|
with historical implementations of \fImknod\fP(). The latter function
|
|
|
|
was included in the 1984 /usr/group standard but only for use in
|
|
|
|
creating FIFO special files. The \fImknod\fP() function was originally
|
|
|
|
excluded from the
|
|
|
|
POSIX.1-1988 standard as implementation-defined and replaced by \fImkdir\fP()
|
|
|
|
and
|
|
|
|
\fImkfifo\fP(). The \fImknod\fP() function is now included for alignment
|
|
|
|
with the Single
|
|
|
|
UNIX Specification.
|
|
|
|
.LP
|
|
|
|
The POSIX.1-1990 standard required that the group ID of a newly created
|
|
|
|
FIFO be set to the group ID of its parent directory or
|
|
|
|
to the effective group ID of the creating process. FIPS 151-2 required
|
|
|
|
that implementations provide a way to have the group ID be
|
|
|
|
set to the group ID of the containing directory, but did not prohibit
|
|
|
|
implementations also supporting a way to set the group ID to
|
|
|
|
the effective group ID of the creating process. Conforming applications
|
|
|
|
should not assume which group ID will be used. If it
|
|
|
|
matters, an application can use \fIchown\fP() to set the group ID
|
|
|
|
after the FIFO is created,
|
|
|
|
or determine under what conditions the implementation will set the
|
|
|
|
desired group ID.
|
|
|
|
.SH FUTURE DIRECTIONS
|
|
|
|
.LP
|
|
|
|
None.
|
|
|
|
.SH SEE ALSO
|
|
|
|
.LP
|
2007-09-20 06:11:55 +00:00
|
|
|
\fIumask\fP(), the Base Definitions volume of IEEE\ Std\ 1003.1-2001,
|
2004-11-03 13:51:07 +00:00
|
|
|
\fI<sys/stat.h>\fP, \fI<sys/types.h>\fP
|
|
|
|
.SH COPYRIGHT
|
|
|
|
Portions of this text are reprinted and reproduced in electronic form
|
|
|
|
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
|
|
|
|
-- Portable Operating System Interface (POSIX), The Open Group Base
|
|
|
|
Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
|
|
|
|
Electrical and Electronics Engineers, Inc and The Open Group. In the
|
|
|
|
event of any discrepancy between this version and the original IEEE and
|
|
|
|
The Open Group Standard, the original IEEE and The Open Group Standard
|
|
|
|
is the referee document. The original Standard can be obtained online at
|
|
|
|
http://www.opengroup.org/unix/online.html .
|