Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
close(2)							      close(2)

       close - delete a	descriptor

       int fd;

       The call	deletes	a descriptor from the per-process object reference ta-
       ble.  If	the descriptor is the last reference to	the underlying object,
       then  the  object  is deactivated.  For example,	on the last close of a
       file, the current pointer associated with the file  is  lost.   On  the
       last  close  of	a  socket,  discards associated	naming information and
       queued data.  On	the last close of a file holding an advisory lock, the
       lock is released.  For further information, see

       A  process's descriptors	are automatically closed when a	process	exits,
       but because each	process	can have a limited number of  active  descrip-
       tors, is	necessary for programs that deal with many descriptors.

       When  a process forks, all descriptors for the new child	process	refer-
       ence the	same objects as	they did in  the  parent  process  before  the
       fork.   For further information,	see If a new process is	then to	be run
       using the process would normally	inherit	these  descriptors.   Most  of
       the  descriptors	can be rearranged with the system call or deleted with
       before is called. However, if any descriptors are needed	if the	fails,
       they must be closed if the execve succeeds.  For	this reason, the call,
       fcntl(d,	F_SETFD, 1), is	provided. This call arranges that a descriptor
       is  closed  after  a  successful	call.  The call, fcntl(d, F_SETFD, 0),
       restores	the default, which is to not close the descriptor.

       When is used on a descriptor that refers	to a remote file over NFS, and
       that  file  has	been modified by using then any	cached data is flushed
       before returns. If an asynchronous write	error has occurred  previously
       with  this  remote  file,  or  occurred	as part	of the flush operation
       described above,	then returns -1	and errno will be  set	to  the	 error
       code.  The return code from should be inspected by any program that can
       over NFS.

Return Values
       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.

       The system call fails under the following conditions:

       [EBADF]	      D	is not an active descriptor.

       [EINTR]	      The function was interrupted by a	signal.

       If an error occurs on an	asynchronous write over	NFS, the error	cannot
       always  be  returned from a system call.	 The error code	is returned on
       or The following	are NFS-only error messages:

       [EACCESS]      The requested address is protected, and the current user
		      has inadequate permission	to access it.

       [ENOSPC]	      There is no free space remaining on the file system con-
		      taining the file.

       [EDQUOT]	      The user's quota of disk blocks on the file system  con-
		      taining the file has been	exhausted.

       [EIO]	      An  I/O  error occurred while reading from or writing to
		      the file system.

       [EROFS]	      The file is on a read-only file system.

       [ESTALE]	      The fd argument is invalid because the file referred  to
		      by  that	file  handle  no  longer  exists  or  has been

       [ETIMEDOUT]    A	write operation	failed	because	 the  server  did  not
		      properly	respond	 after a period	of time	that is	depen-
		      dent on the options.

See Also
       accept(2), execve(2), fcntl(2), flock(2), fsync(2),  open(2),  pipe(2),
       socket(2), socketpair(2), write(2)


Name | Syntax | Description | Return Values | Diagnostics | See Also

Want to link to this manual page? Use this URL:

home | help