diff options
-rw-r--r-- | getloadavg.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/getloadavg.c b/getloadavg.c index 8689a81..5cf0b99 100644 --- a/getloadavg.c +++ b/getloadavg.c @@ -840,7 +840,17 @@ getloadavg (loadavg, nelem) #ifndef SUNOS_5 channel = open ("/dev/kmem", 0); if (channel >= 0) - getloadavg_initialized = 1; + { + /* Set the channel to close on exec, so it does not + litter any child's descriptor table. */ +#ifdef FD_SETFD +#ifndef FD_CLOEXEC +#define FD_CLOEXEC 1 +#endif + (void) fcntl (channel, F_SETFD, FD_CLOEXEC); +#endif + getloadavg_initialized = 1; + } #else /* SUNOS_5 */ /* We pass 0 for the kernel, corefile, and swapfile names to use the currently running kernel. */ |