]> diplodocus.org Git - nmh/blob - sbr/push.c
Just reworded the bit about '%s' being safe not to quote (it's only safe not to
[nmh] / sbr / push.c
1
2 /*
3 * push.c -- push a fork into the background
4 *
5 * $Id$
6 */
7
8 #include <h/mh.h>
9 #include <h/signals.h>
10 #include <signal.h>
11
12
13 void
14 push(void)
15 {
16 pid_t pid;
17 int i;
18
19 for (i = 0; (pid = fork()) == -1 && i < 5; i++)
20 sleep (5);
21
22 switch (pid) {
23 case -1:
24 /* fork error */
25 advise (NULL, "unable to fork, so can't push...");
26 break;
27
28 case 0:
29 /* child, block a few signals and continue */
30 SIGNAL (SIGHUP, SIG_IGN);
31 SIGNAL (SIGINT, SIG_IGN);
32 SIGNAL (SIGQUIT, SIG_IGN);
33 SIGNAL (SIGTERM, SIG_IGN);
34 #ifdef SIGTSTP
35 SIGNAL (SIGTSTP, SIG_IGN);
36 SIGNAL (SIGTTIN, SIG_IGN);
37 SIGNAL (SIGTTOU, SIG_IGN);
38 #endif
39 freopen ("/dev/null", "r", stdin);
40 freopen ("/dev/null", "w", stdout);
41 break;
42
43 default:
44 /* parent, just exit */
45 done (0);
46 }
47 }
48