Unix/Linux Go Back    


Linux 2.6 - man page for mkfifo (linux section 3posix)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


MKFIFO(P)			    POSIX Programmer's Manual				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 .

IEEE/The Open Group			       2003					MKFIFO(P)
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 04:50 PM.