90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\" Copyright (c) 1980 Regents of the University of California.
 | |
| .\" All rights reserved.  The Berkeley software License Agreement
 | |
| .\" specifies the terms and conditions for redistribution.
 | |
| .\"
 | |
| .\"	@(#)pipe.2	6.2 (Berkeley) 8/26/85
 | |
| .\"
 | |
| .TH PIPE 2 "August 26, 1985"
 | |
| .UC 4
 | |
| .SH NAME
 | |
| pipe \- create an interprocess communication channel
 | |
| .SH SYNOPSIS
 | |
| .nf
 | |
| .ft B
 | |
| #include <unistd.h>
 | |
| 
 | |
| int pipe(int \fIfildes\fP[2])
 | |
| .fi
 | |
| .ft R
 | |
| .SH DESCRIPTION
 | |
| The
 | |
| .B pipe
 | |
| system call
 | |
| creates an I/O mechanism called a pipe.
 | |
| The file descriptors returned can
 | |
| be used in read and write operations.
 | |
| When the pipe is written using the descriptor
 | |
| .IR fildes [1]
 | |
| up to PIPE_MAX bytes of data are buffered
 | |
| before the writing process is suspended.
 | |
| A read using the descriptor
 | |
| .IR fildes [0]
 | |
| will pick up the data.
 | |
| .PP
 | |
| PIPE_MAX equals 7168 under MINIX 3, but note that most systems use 4096.
 | |
| .PP
 | |
| It is assumed that after the
 | |
| pipe has been set up,
 | |
| two (or more)
 | |
| cooperating processes
 | |
| (created by subsequent
 | |
| .B fork
 | |
| calls)
 | |
| will pass data through the
 | |
| pipe with
 | |
| .B read
 | |
| and
 | |
| .B write
 | |
| calls.
 | |
| .PP
 | |
| The shell has a syntax
 | |
| to set up a linear array of processes
 | |
| connected by pipes.
 | |
| .PP
 | |
| Read calls on an empty
 | |
| pipe (no buffered data) with only one end
 | |
| (all write file descriptors closed)
 | |
| returns an end-of-file.
 | |
| .PP
 | |
| The signal SIGPIPE is generated if a write on a pipe with only one end
 | |
| is attempted.
 | |
| .SH "RETURN VALUE
 | |
| The function value zero is returned if the
 | |
| pipe was created; \-1 if an error occurred.
 | |
| .SH ERRORS
 | |
| The \fBpipe\fP call will fail if:
 | |
| .TP 15
 | |
| [EMFILE]
 | |
| Too many descriptors are active.
 | |
| .TP 15
 | |
| [ENFILE]
 | |
| The system file table is full.
 | |
| .TP 15
 | |
| [ENOSPC]
 | |
| The pipe file system (usually the root file system) has no free inodes.
 | |
| .TP 15
 | |
| [EFAULT]
 | |
| The \fIfildes\fP buffer is in an invalid area of the process's address
 | |
| space.
 | |
| .SH "SEE ALSO"
 | |
| .BR sh (1),
 | |
| .BR read (2),
 | |
| .BR write (2),
 | |
| .BR fork (2).
 | |
| .SH NOTES
 | |
| Writes may return ENOSPC errors if no pipe data can be buffered, because
 | |
| the pipe file system is full.
 | |
| .SH BUGS
 | |
| Should more than PIPE_MAX bytes be necessary in any
 | |
| pipe among a loop of processes, deadlock will occur.
 | 
