*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> close (2)              



NAME    [Toc]    [Back]

     close - delete a descriptor

SYNOPSIS    [Toc]    [Back]

     #include <unistd.h>

     close(int d);

DESCRIPTION    [Toc]    [Back]

     The close() call deletes a descriptor from  the  per-process
object reference
 table.  If this is the last reference to the underlying
object, the
     object will be deactivated.  For example, on the last  close
of a file the
     current  seek  pointer  associated with the file is lost; on
the last close
     of a socket(2) associated naming information and queued data
are discarded;
 on the last close of a file holding an advisory lock the
lock is released.
  However, the semantics of System  V  and  IEEE  Std
     (``POSIX'')  dictate that all fcntl(2) advisory record locks
     with a file for a given process are removed  when  any  file
descriptor for
     that  file is closed by that process (see further flock(2)).

     When a process exits, all associated  file  descriptors  are
freed, but
     since  there is a limit on active descriptors per processes,
the close()
     function call is useful when a large quantity  of  file  descriptors are being

     When  a process forks (see fork(2)), all descriptors for the
new child
     process reference the same objects as they did in the parent
before the
     fork.   If  a new process is then to be run using execve(2),
the process
     would normally inherit these descriptors.  Most of  the  descriptors can be
     rearranged  with  dup2(2) or deleted with close() before the
execve(2) is
     attempted, but if some of these descriptors  will  still  be
needed if the
     execve  fails,  it  is  necessary  to arrange for them to be
closed if the execve
  succeeds.   For  this  reason,  the  call   ``fcntl(d,
F_SETFD, 1)'' is
     provided,  which  arranges  that a descriptor will be closed
after a successful
 execve; the call ``fcntl(d, F_SETFD,  0)''  restores
the default,
     which is to not close the descriptor.

RETURN VALUES    [Toc]    [Back]

     Upon  successful completion, a value of 0 is returned.  Otherwise, a value
     of -1 is returned and the global integer variable  errno  is
set to indicate
 the error.

ERRORS    [Toc]    [Back]

     close() will fail if:

     [EBADF]       D is not an active descriptor.

     [EINTR]       An interrupt was received.

SEE ALSO    [Toc]    [Back]

     accept(2),   closefrom(2),  execve(2),  fcntl(2),  flock(2),
open(2), pipe(2),
     socket(2), socketpair(2)

STANDARDS    [Toc]    [Back]

     close() conforms to IEEE Std 1003.1-1988 (``POSIX'').

OpenBSD     3.6                          April      19,      1994
[ Back ]
 Similar pages
Name OS Title
pxfisatty IRIX Determines if file descriptor corresponds to a valid file descriptor
ldgetpd Tru64 retrieves procedure descriptor given a procedure descriptor index
ldgetpd IRIX retrieve procedure descriptor given a procedure descriptor index
acl_delete_def_file FreeBSD delete an ACL from a file
acl_delete_fd_np FreeBSD delete an ACL from a file
groupdel Linux Delete a group
glcdeletefont IRIX delete a font
rmdir Linux delete a directory
acl_delete_entry FreeBSD delete an ACL entry from an ACL
acl_delete_file_np FreeBSD delete an ACL from a file
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service