projects
/
musl
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
19e35c5
)
make daemon try the operations that might fail before fork rather than after
author
Rich Felker
<dalias@aerifal.cx>
Thu, 17 Feb 2011 15:30:00 +0000
(10:30 -0500)
committer
Rich Felker
<dalias@aerifal.cx>
Thu, 17 Feb 2011 15:30:00 +0000
(10:30 -0500)
src/linux/daemon.c
patch
|
blob
|
history
diff --git
a/src/linux/daemon.c
b/src/linux/daemon.c
index
3750fc3
..
afb8019
100644
(file)
--- a/
src/linux/daemon.c
+++ b/
src/linux/daemon.c
@@
-3,7
+3,16
@@
int daemon(int nochdir, int noclose)
{
int daemon(int nochdir, int noclose)
{
- int fd;
+ if (!nochdir && chdir("/"))
+ return -1;
+ if (!noclose) {
+ int fd, failed = 0;
+ if ((fd = open("/dev/null", O_RDWR)) < 0) return -1;
+ if (dup2(fd, 0) < 0 || dup2(fd, 1) < 0 || dup2(fd, 2) < 0)
+ failed++;
+ if (fd > 2) close(fd);
+ if (failed) return -1;
+ }
switch(fork()) {
case 0: break;
switch(fork()) {
case 0: break;
@@
-19,16
+28,5
@@
int daemon(int nochdir, int noclose)
default: _exit(0);
}
default: _exit(0);
}
- if (!nochdir && chdir("/"))
- return -1;
- if (!noclose) {
- int failed = 0;
- if ((fd = open("/dev/null", O_RDWR)) < 0) return -1;
- if (dup2(fd, 0) < 0 || dup2(fd, 1) < 0 || dup2(fd, 2) < 0)
- failed++;
- if (fd > 2) close(fd);
- if (failed) return -1;
- }
-
return 0;
}
return 0;
}