#include <sys/types.h>
#include <sys/stat.h>
+#include <fcntl.h>
#include <glob.h>
#include <libubox/ustream.h>
if (pid) {
close(pipefd[1]);
+ fcntl(pipefd[0], F_SETFD, FD_CLOEXEC);
s->fd.stream.string_data = true,
s->fd.stream.notify_read = pipe_cb,
runqueue_process_add(q, &s->proc, pid);
return;
}
close(pipefd[0]);
+
+ int devnull = open("/dev/null", O_RDONLY);
+ dup2(devnull, STDIN_FILENO);
dup2(pipefd[1], STDOUT_FILENO);
dup2(pipefd[1], STDERR_FILENO);
+ if (devnull > STDERR_FILENO)
+ close(devnull);
+
execlp(s->file, s->file, s->param, NULL);
exit(1);
}