|
|
1.1 ! root 1: .\" Copyright (c) 1980 Regents of the University of California. ! 2: .\" All rights reserved. The Berkeley software License Agreement ! 3: .\" specifies the terms and conditions for redistribution. ! 4: .\" ! 5: .\" @(#)pipe.2 6.2 (Berkeley) 8/26/85 ! 6: .\" ! 7: .TH PIPE 2 "August 26, 1985" ! 8: .UC 4 ! 9: .SH NAME ! 10: pipe \- create an interprocess communication channel ! 11: .SH SYNOPSIS ! 12: .nf ! 13: .ft B ! 14: pipe(fildes) ! 15: int fildes[2]; ! 16: .fi ! 17: .ft R ! 18: .SH DESCRIPTION ! 19: The ! 20: .I pipe ! 21: system call ! 22: creates an I/O mechanism called a pipe. ! 23: The file descriptors returned can ! 24: be used in read and write operations. ! 25: When the pipe is written using the descriptor ! 26: .IR fildes [1] ! 27: up to 4096 bytes of data are buffered ! 28: before the writing process is suspended. ! 29: A read using the descriptor ! 30: .IR fildes [0] ! 31: will pick up the data. ! 32: .PP ! 33: It is assumed that after the ! 34: pipe has been set up, ! 35: two (or more) ! 36: cooperating processes ! 37: (created by subsequent ! 38: .I fork ! 39: calls) ! 40: will pass data through the ! 41: pipe with ! 42: .I read ! 43: and ! 44: .I write ! 45: calls. ! 46: .PP ! 47: The shell has a syntax ! 48: to set up a linear array of processes ! 49: connected by pipes. ! 50: .PP ! 51: Read calls on an empty ! 52: pipe (no buffered data) with only one end ! 53: (all write file descriptors closed) ! 54: returns an end-of-file. ! 55: .PP ! 56: Pipes are really a special case of the ! 57: .IR socketpair (2) ! 58: call and, in fact, are implemented as such in the system. ! 59: .PP ! 60: A signal is generated if a write on a pipe with only one end is attempted. ! 61: .SH "RETURN VALUE ! 62: The function value zero is returned if the ! 63: pipe was created; \-1 if an error occurred. ! 64: .SH ERRORS ! 65: The \fIpipe\fP call will fail if: ! 66: .TP 15 ! 67: [EMFILE] ! 68: Too many descriptors are active. ! 69: .TP 15 ! 70: [ENFILE] ! 71: The system file table is full. ! 72: .TP 15 ! 73: [EFAULT] ! 74: The \fIfildes\fP buffer is in an invalid area of the process's address ! 75: space. ! 76: .SH "SEE ALSO" ! 77: sh(1), read(2), write(2), fork(2), socketpair(2) ! 78: .SH BUGS ! 79: Should more than 4096 bytes be necessary in any ! 80: pipe among a loop of processes, deadlock will occur.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.