Use /dev/fd instead of /proc/self/fd

/dev/fd exists on all operating systems I can test (Linux, FreeBSD, macOS),
whereas /proc/self/fd only appears to exist on Linux.

Signed-off-by: Alex Richardson <Alexander.Richardson@cl.cam.ac.uk>
This commit is contained in:
Alex Richardson 2021-03-18 09:25:58 +00:00 committed by Alexander Richardson
parent 5a981ee823
commit 644efe9517

View File

@ -48,8 +48,12 @@ count_open_fds(void)
struct dirent *ent;
int count = 0;
dir = opendir("/proc/self/fd");
assert(dir && "opening /proc/self/fd failed.");
/*
* Using /dev/fd instead of /proc/self/fd should allow this code to
* work on non-Linux operating systems.
*/
dir = opendir("/dev/fd");
assert(dir && "opening /dev/fd failed.");
errno = 0;
while ((ent = readdir(dir))) {
@ -58,7 +62,7 @@ count_open_fds(void)
continue;
count++;
}
assert(errno == 0 && "reading /proc/self/fd failed.");
assert(errno == 0 && "reading /dev/fd failed.");
closedir(dir);