On some systems (see below) they can be converted to / proc / [pid] / fd. If not on one of them, see below: wallyk answer .
In c, you can list the directory and calculate the total or list the contents of the directory:
#include <stdio.h> #include <sys/types.h> #include <dirent.h> int main (void) { DIR *dp; struct dirent *ep; dp = opendir ("/proc/MYPID/fd/"); if (dp != NULL) { while (ep = readdir (dp)) puts (ep->d_name); (void) closedir (dp); } else perror ("Couldn't open the directory"); return 0; }
In bash, something like:
ls -l /proc/[pid]/fd/ | wc -l
Operating systems that support the proc file system include, but are not limited to:
Solaris
IRIX
Tru64 UNIX
BSD
Linux (which extends it to non-process data)
IBM AIX (which bases its implementation on Linux to increase compatibility)
QNX
Plan 9 from Bell Labs
source share