CLOSE.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. ." @(#)close.2 6.3 (Berkeley) 5/22/86
  6. ."
  7. .TH CLOSE 2 "May 22, 1986"
  8. .UC 4
  9. .SH NAME
  10. close - delete a descriptor
  11. .SH SYNOPSIS
  12. .nf
  13. .ft B
  14. #include <unistd.h>
  15. int close(int fIdfP)
  16. .ft R
  17. .fi
  18. .SH DESCRIPTION
  19. The
  20. .B close
  21. call deletes a descriptor from the per-process object
  22. reference table.
  23. If this is the last reference to the underlying object, then
  24. it will be deactivated.
  25. For example, on the last close of a file
  26. the current fIseekfP pointer associated with the file is lost;
  27. on the last close of a TCP/IP descriptor
  28. associated naming information and queued data are discarded;
  29. on the last close of a file holding an advisory lock
  30. the lock is released (see further
  31. .BR fcntl (2)).
  32. .PP
  33. A close of all of a process's descriptors is automatic on
  34. .IR exit ,
  35. but since
  36. there is a limit on the number of active descriptors per process,
  37. .B close
  38. is necessary for programs that deal with many descriptors.
  39. .PP
  40. When a process forks (see
  41. .BR fork (2)),
  42. all descriptors for the new child process reference the same
  43. objects as they did in the parent before the fork.
  44. If a new process is then to be run using
  45. .BR execve (2),
  46. the process would normally inherit these descriptors.  Most
  47. of the descriptors can be rearranged with
  48. .BR dup2 (2)
  49. or deleted with
  50. .B close
  51. before the
  52. .B execve
  53. is attempted, but if some of these descriptors will still
  54. be needed if the
  55. .B execve
  56. fails, it is necessary to arrange for them to be closed if the
  57. .B execve
  58. succeeds.
  59. For this reason, the call ``fcntl(d, F_SETFD, fIflagsfR)'' is provided,
  60. that can be used to mark a descriptor "close on exec" by setting
  61. the
  62. .B FD_CLOEXEC
  63. flag:
  64. .PP
  65. .RS
  66. fcntl(d, F_SETFD, fcntl(d, F_GETFD) | FD_CLOEXEC);
  67. .RE
  68. .SH "RETURN VALUE
  69. Upon successful completion, a value of 0 is returned.
  70. Otherwise, a value of -1 is returned and the global integer variable
  71. .B errno
  72. is set to indicate the error.
  73. .SH ERRORS
  74. .B Close
  75. will fail if:
  76. .TP 15
  77. [EBADF]
  78. fIDfP is not an active descriptor.
  79. .SH "SEE ALSO"
  80. .BR open (2),
  81. .BR pipe (2),
  82. .BR execve (2),
  83. .BR fcntl (2).