Unix/Linux Go Back    


man page for closefrom (all section 3c)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


closefrom(3C)			   Standard C Library Functions 		    closefrom(3C)

NAME
       closefrom, fdwalk - close or iterate over open file descriptors

SYNOPSIS
       #include <stdlib.h>

       void closefrom(int lowfd);

       int fdwalk(int (*func)(void *, int), void *cd);

DESCRIPTION
       The closefrom() function calls close(2) on all open file descriptors greater than or equal
       to lowfd.

       The effect of closefrom(lowfd) is the same as the code

	 #include <sys/resource.h>
	 struct rlimit rl;
	 int i;

	 getrlimit(RLIMIT_NOFILE, &rl);
	 for (i = lowfd; i < rl.rlim_max; i++)
	      (void) close(i);

       except that close() is called only on file descriptors that  are  actually  open,  not  on
       every  possible file descriptor greater than or equal to lowfd, and close() is also called
       on any open file descriptors greater than or equal to rl.rlim_max (and lowfd), should  any
       exist.

       The  fdwalk() function first makes a list of all currently open file descriptors. Then for
       each file descriptor in the list, it calls the user-defined function, func(cd, fd),  pass-
       ing it the pointer to the callback data, cd, and the value of the file descriptor from the
       list, fd.  The list is processed in file descriptor  value  order,  lowest  numeric  value
       first.

       If func() returns a non-zero value, the iteration over the list is terminated and fdwalk()
       returns the non-zero value returned by func().  Otherwise, fdwalk() returns 0 after having
       called func() for every file descriptor in the list.

       The  fdwalk()  function	can  be  used  for  fine-grained control over the closing of file
       descriptors.  For example, the closefrom() function can be implemented as:

	 static int
	 close_func(void *lowfdp, int fd)
	 {
	      if (fd >= *(int *)lowfdp)
		   (void) close(fd);
	      return(0);
	 }

	 void
	 closefrom(int lowfd)
	 {
	      (void) fdwalk(close_func, &lowfd);
	 }

       The fdwalk() function can then be used to count the number of open files in the process.

RETURN VALUES
       No return value is defined for closefrom(). If close() fails for  any  of  the  open  file
       descriptors,  the error is ignored and the file descriptors whose close() operation failed
       might remain open on return from closefrom().

       The fdwalk() function returns the return value of the last call to the  callback  function
       func(), or 0 if func() is never called (no open files).

ERRORS
       No  errors  are defined. The closefrom() and fdwalk() functions do not set errno but errno
       can be set by close() or by another function called by the callback function, func().

FILES
       /proc/self/fd	directory (list of open files)

USAGE
       The act of closing all open file descriptors should be performed only as the first  action
       of  a  daemon  process.	Closing file descriptors that are in use elsewhere in the current
       process normally leads to disastrous results.

ATTRIBUTES
       See attributes(5)  for descriptions of the following attributes:

       +-----------------------------+-----------------------------+
       |      ATTRIBUTE TYPE	     |	    ATTRIBUTE VALUE	   |
       +-----------------------------+-----------------------------+
       |MT-Level		     |Unsafe			   |
       +-----------------------------+-----------------------------+

SEE ALSO
       close(2), getrlimit(2), proc(4), attributes(5)

SunOS 5.11				   27 Apr 2000				    closefrom(3C)
Unix & Linux Commands & Man Pages : 2000 - 2016 Unix and Linux Forums


All times are GMT -4. The time now is 04:04 AM.