Fix retriggering of init.d-scripts which calls commands dependent on functional STDIN/STDOUT/STDERR.
If we just close these file descriptors those commands will not work as expected leading to unwanted consequences. If we instead redirect the file descriptors to /dev/null, we will end up the same end-result and these commands will work as expected. Signed-off-by: Markus Gothe <markus.go...@genexis.eu> --- service/trigger.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/service/trigger.c b/service/trigger.c index 4af1474..324d78e 100644 --- a/service/trigger.c +++ b/service/trigger.c @@ -118,9 +118,16 @@ static void trigger_command_run(struct runqueue *q, struct runqueue_task *t) } if (debug < 3) { - close(STDIN_FILENO); - close(STDOUT_FILENO); - close(STDERR_FILENO); + int devnull = open("/dev/null", O_RDWR); + + if (devnull >= 0) { + dup2(devnull, STDIN_FILENO); + dup2(devnull, STDOUT_FILENO); + dup2(devnull, STDERR_FILENO); + + if (devnull > STDERR_FILENO) + close(devnull); + } } blobmsg_for_each_attr(cur, cmd->data, rem) -- 2.34.1 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel