projects
/
oweals
/
procd.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
ba0cb9c
)
hotplug: terminate uloop after fork(), redirect stdin, out and err to /dev/null
author
Jo-Philipp Wich
<jow@openwrt.org>
Wed, 14 Aug 2013 19:04:31 +0000
(21:04 +0200)
committer
Jo-Philipp Wich
<jow@openwrt.org>
Thu, 15 Aug 2013 10:30:51 +0000
(12:30 +0200)
hotplug.c
patch
|
blob
|
history
diff --git
a/hotplug.c
b/hotplug.c
index 21efcf573cc3de3cb050553a733f54087bea102a..422e84987241b281cef7ebac9255cd31a25a9607 100644
(file)
--- a/
hotplug.c
+++ b/
hotplug.c
@@
-124,7
+124,7
@@
static void handle_exec(struct blob_attr *msg, struct blob_attr *data)
{
char *argv[8];
struct blob_attr *cur;
- int rem;
+ int rem
, fd
;
int i = 0;
blobmsg_for_each_attr(cur, msg, rem)
@@
-138,9
+138,14
@@
static void handle_exec(struct blob_attr *msg, struct blob_attr *data)
}
if (debug < 2) {
- close(STDIN_FILENO);
- close(STDOUT_FILENO);
- close(STDERR_FILENO);
+ fd = open("/dev/null", O_RDWR);
+ if (fd > -1) {
+ dup2(fd, STDIN_FILENO);
+ dup2(fd, STDOUT_FILENO);
+ dup2(fd, STDERR_FILENO);
+ if (fd > STDERR_FILENO)
+ close(fd);
+ }
}
if (i > 0) {
@@
-263,6
+268,7
@@
static void queue_next(void)
queue_proc.pid = fork();
if (!queue_proc.pid) {
+ uloop_done();
c->handler(c->msg, c->data);
exit(0);
}