X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fexec.c;h=5eae906bee3f12ca74faeb07382488de7f36c6f6;hb=9d5a7847b03d78a94b6a0b153abeb630b4b94ddd;hp=20e65df0a2656f5eb4204aef28cad181579f5ff5;hpb=c192de2c944bf9c73903b4a6ac8379db3acc5955;p=collectd.git diff --git a/src/exec.c b/src/exec.c index 20e65df0..5eae906b 100644 --- a/src/exec.c +++ b/src/exec.c @@ -421,8 +421,17 @@ static int fork_child (program_list_t *pl, int *fd_in, int *fd_out) /* {{{ */ } else if (pid == 0) { - close (fd_pipe_in[1]); - close (fd_pipe_out[0]); + int fd_num; + int fd; + + /* Close all file descriptors but the pipe end we need. */ + fd_num = getdtablesize (); + for (fd = 0; fd < fd_num; fd++) + { + if ((fd == fd_pipe_in[0]) || (fd == fd_pipe_out[1])) + continue; + close (fd); + } /* If the `out' pipe has the filedescriptor STDIN we have to be careful * with the `dup's below. So, if this is the case we have to handle the