PIPE.2
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:2k
源码类别:

操作系统开发

开发平台:

C/C++

  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. #include <unistd.h>
  15. int pipe(int fIfildesfP[2])
  16. .fi
  17. .ft R
  18. .SH DESCRIPTION
  19. The
  20. .B 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 PIPE_MAX 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. PIPE_MAX equals 7168 under Minix, but note that most systems use 4096.
  34. .PP
  35. It is assumed that after the
  36. pipe has been set up,
  37. two (or more)
  38. cooperating processes
  39. (created by subsequent
  40. .B fork
  41. calls)
  42. will pass data through the
  43. pipe with
  44. .B read
  45. and
  46. .B write
  47. calls.
  48. .PP
  49. The shell has a syntax
  50. to set up a linear array of processes
  51. connected by pipes.
  52. .PP
  53. Read calls on an empty
  54. pipe (no buffered data) with only one end
  55. (all write file descriptors closed)
  56. returns an end-of-file.
  57. .PP
  58. The signal SIGPIPE is generated if a write on a pipe with only one end
  59. is attempted.
  60. .SH "RETURN VALUE
  61. The function value zero is returned if the
  62. pipe was created; -1 if an error occurred.
  63. .SH ERRORS
  64. The fBpipefP call will fail if:
  65. .TP 15
  66. [EMFILE]
  67. Too many descriptors are active.
  68. .TP 15
  69. [ENFILE]
  70. The system file table is full.
  71. .TP 15
  72. [ENOSPC]
  73. The pipe file system (usually the root file system) has no free inodes.
  74. .TP 15
  75. [EFAULT]
  76. The fIfildesfP buffer is in an invalid area of the process's address
  77. space.
  78. .SH "SEE ALSO"
  79. .BR sh (1),
  80. .BR read (2),
  81. .BR write (2),
  82. .BR fork (2).
  83. .SH NOTES
  84. Writes may return ENOSPC errors if no pipe data can be buffered, because
  85. the pipe file system is full.
  86. .SH BUGS
  87. Should more than PIPE_MAX bytes be necessary in any
  88. pipe among a loop of processes, deadlock will occur.