В некоторых системах (см. Ниже) вы можете считать их в / proc / [pid] / fd. Если нет на одном из них, см. Ниже: ответ Wallyk .
В c вы можете перечислить dir и подсчитать общее количество, или перечислить содержимое dir:
#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;
}
В bash, что-то вроде:
ls -l /proc/[pid]/fd/ | wc -l
Операционные системы, которые поддерживают файловую систему proc, включают, но
не ограничивается:
Solaris
IRIX
Tru64 UNIX
BSD
Linux (который распространяется на данные, не связанные с процессом)
IBM AIX (основанная на Linux для улучшения совместимости)
QNX
План 9 от Bell Labs