mkfifo(3p) - Online Manual Page Of Unix/Linux

  Command: man perldoc info search(apropos)

WebSearch:
Our Recommended Sites: Full-Featured Editor
 

MKFIFO(P)                                                                               MKFIFO(P)



NAME
       mkfifo - make a FIFO special file

SYNOPSIS
       #include <sys/stat.h>

       int mkfifo(const char *path, mode_t mode);


DESCRIPTION
       The  mkfifo()  function shall create a new FIFO special file named by the pathname pointed
       to by path. The file permission bits of the new FIFO shall be initialized from mode.   The
       file  permission bits of the mode argument shall be modified by the process' file creation
       mask.

       When bits in mode other than the file permission bits are set, the effect  is  implementa-
       tion-defined.

       If path names a symbolic link, mkfifo() shall fail and set errno to [EEXIST].

       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  implemen-
       tation-defined  way  to  initialize  the  FIFO's group ID to the effective group ID of the
       calling process.

       Upon successful completion, mkfifo() shall mark for update  the  st_atime,  st_ctime,  and
       st_mtime  fields of the file. Also, the st_ctime and st_mtime fields of the directory that
       contains the new entry shall be marked for update.

RETURN VALUE
       Upon successful completion, 0 shall be returned. Otherwise, -1 shall be returned, no  FIFO
       shall be created, and errno shall be set to indicate the error.

ERRORS
       The mkfifo() function shall fail if:

       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.

       EEXIST The named file already exists.

       ELOOP  A loop exists in symbolic links encountered during resolution of the path argument.

       ENAMETOOLONG
              The  length  of  the  path  argument  exceeds {PATH_MAX} or a pathname component is
              longer than {NAME_MAX}.

       ENOENT A component of the path prefix specified by path does not name an  existing  direc-
              tory or path is an empty string.

       ENOSPC The directory that would contain the new file cannot be extended or the file system
              is out of file-allocation resources.

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

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


       The mkfifo() function may fail if:

       ELOOP  More than {SYMLOOP_MAX} symbolic links were encountered during  resolution  of  the
              path argument.

       ENAMETOOLONG
              As a result of encountering a symbolic link in resolution of the path argument, the
              length of the substituted pathname string exceeded {PATH_MAX}.


       The following sections are informative.

EXAMPLES
   Creating a FIFO File
       The following example shows how to create  a  FIFO  file  named  /home/cnd/mod_done,  with
       read/write permissions for owner, and with read permissions for group and others.


              #include <sys/types.h>
              #include <sys/stat.h>


              int status;
              ...
              status = mkfifo("/home/cnd/mod_done", S_IWUSR | S_IRUSR |
                  S_IRGRP | S_IROTH);

APPLICATION USAGE
       None.

RATIONALE
       The  syntax  of this function is intended to maintain compatibility with historical imple-
       mentations of mknod(). The latter function was included in the  1984  /usr/group  standard
       but  only  for  use  in  creating  FIFO special files. The mknod() function was originally
       excluded from the POSIX.1-1988 standard as implementation-defined and replaced by  mkdir()
       and  mkfifo().  The  mknod()  function  is now included for alignment with the Single UNIX
       Specification.

       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 chown() to set the group ID after the FIFO is created,  or  determine  under  what
       conditions the implementation will set the desired group ID.

FUTURE DIRECTIONS
       None.

SEE ALSO
       umask() , the Base Definitions volume of IEEE Std 1003.1-2001, <sys/stat.h>, <sys/types.h>

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 orig-
       inal Standard can be obtained online at http://www.opengroup.org/unix/online.html .



POSIX                                          2003                                     MKFIFO(P)