DUP.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. ." @(#)dup.2 6.3 (Berkeley) 5/13/86
  6. ."
  7. .TH DUP 2 "May 13, 1986"
  8. .UC 4
  9. .SH NAME
  10. dup, dup2 - duplicate a descriptor
  11. .SH SYNOPSIS
  12. .nf
  13. .ft B
  14. #include <unistd.h>
  15. int dup(int fIolddfP)
  16. int dup2(int fIolddfP, int fInewdfP)
  17. .SH DESCRIPTION
  18. .B Dup
  19. duplicates an existing descriptor.
  20. The argument fIolddfP is a small non-negative integer index in
  21. the per-process descriptor table.  The value must be less
  22. than OPEN_MAX, the size of the table.
  23. The new descriptor returned by the call, let's name it
  24. .I newd,
  25. is the lowest numbered descriptor that is
  26. not currently in use by the process.
  27. .PP
  28. The object referenced by the descriptor does not distinguish
  29. between references using fIolddfP and fInewdfP in any way.
  30. Thus if fInewdfP and fIolddfP are duplicate references to an open
  31. file,
  32. .BR read (2),
  33. .BR write (2)
  34. and
  35. .BR lseek (2)
  36. calls all move a single pointer into the file,
  37. and append mode, non-blocking I/O and asynchronous I/O options
  38. are shared between the references.
  39. If a separate pointer into the file is desired, a different
  40. object reference to the file must be obtained by issuing an
  41. additional
  42. .BR open (2)
  43. call.
  44. The close-on-exec flag on the new file descriptor is unset.
  45. .PP
  46. In the second form of the call, the value of
  47. .IR newd
  48. desired is specified.  If this descriptor is already
  49. in use, the descriptor is first deallocated as if a
  50. .BR close (2)
  51. call had been done first.
  52. .I Newd
  53. is not closed if it equals
  54. .IR oldd .
  55. .SH "RETURN VALUE
  56. The value -1 is returned if an error occurs in either call.
  57. The external variable
  58. .B errno
  59. indicates the cause of the error.
  60. .SH "ERRORS
  61. .B Dup
  62. and
  63. .B dup2
  64. fail if:
  65. .TP 15
  66. [EBADF]
  67. fIOlddfP or
  68. fInewdfP is not a valid active descriptor
  69. .TP 15
  70. [EMFILE]
  71. Too many descriptors are active.
  72. .SH NOTES
  73. .B Dup
  74. and
  75. .B dup2
  76. are now implemented using the
  77. .B F_DUPFD
  78. function of
  79. .BR fcntl (2),
  80. although the old system call interfaces still exist to support old programs.
  81. .SH "SEE ALSO"
  82. .BR open (2),
  83. .BR close (2),
  84. .BR fcntl (2),
  85. .BR pipe (2).