Mercurial > hg > toybox
annotate lib/pending.c @ 1327:85f297591693 draft
Introduce xfork() and make commands use it, and make some WEXITSTATUS() use WIFEXITED() and WTERMSIG()+127.
author | Rob Landley <rob@landley.net> |
---|---|
date | Sat, 31 May 2014 12:33:24 -0500 |
parents | d48bdc1cb017 |
children |
rev | line source |
---|---|
949
59d4d453296b
New stuff added to lib.c needs review too, so make a lib/pending.c and move several functions to it.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
1 /* pending.c - reusable stuff awaiting review |
59d4d453296b
New stuff added to lib.c needs review too, so make a lib/pending.c and move several functions to it.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
2 * |
59d4d453296b
New stuff added to lib.c needs review too, so make a lib/pending.c and move several functions to it.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
3 * new lib entries for stuff in toys/pending |
59d4d453296b
New stuff added to lib.c needs review too, so make a lib/pending.c and move several functions to it.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
4 */ |
59d4d453296b
New stuff added to lib.c needs review too, so make a lib/pending.c and move several functions to it.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
5 |
59d4d453296b
New stuff added to lib.c needs review too, so make a lib/pending.c and move several functions to it.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
6 #include "toys.h" |
59d4d453296b
New stuff added to lib.c needs review too, so make a lib/pending.c and move several functions to it.
Rob Landley <rob@landley.net>
parents:
diff
changeset
|
7 |
995
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
8 void daemonize(void) |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
9 { |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
10 int fd = open("/dev/null", O_RDWR); |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
11 if (fd < 0) fd = xcreate("/", O_RDONLY, 0666); |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
12 |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
13 pid_t pid = fork(); |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
14 if (pid < 0) perror_exit("DAEMON: failed to fork"); |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
15 if (pid) exit(EXIT_SUCCESS); |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
16 |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
17 setsid(); |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
18 dup2(fd, 0); |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
19 dup2(fd, 1); |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
20 dup2(fd, 2); |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
21 if (fd > 2) close(fd); |
893c86bbe452
Add daemonize function to lib for klogd and syslogd
Felix Janda <felix.janda@posteo.de>
parents:
949
diff
changeset
|
22 } |