annotate sbr/push.c @ 0:bce86c4163a3

Initial revision
author kono
date Mon, 18 Apr 2005 23:46:02 +0900
parents
children 441a2190cfae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bce86c4163a3 Initial revision
kono
parents:
diff changeset
1 /* push.c - push a fork into the background */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
2 #ifndef lint
bce86c4163a3 Initial revision
kono
parents:
diff changeset
3 static char ident[] = "@(#)$Id$";
bce86c4163a3 Initial revision
kono
parents:
diff changeset
4 #endif /* lint */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
5
bce86c4163a3 Initial revision
kono
parents:
diff changeset
6 #include "../h/mh.h"
bce86c4163a3 Initial revision
kono
parents:
diff changeset
7 #include <stdio.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
8 #include <signal.h>
bce86c4163a3 Initial revision
kono
parents:
diff changeset
9
bce86c4163a3 Initial revision
kono
parents:
diff changeset
10
bce86c4163a3 Initial revision
kono
parents:
diff changeset
11 void push () {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
12 register int i;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
13
bce86c4163a3 Initial revision
kono
parents:
diff changeset
14 for (i = 0; i < 5; i++) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
15 switch (fork ()) {
bce86c4163a3 Initial revision
kono
parents:
diff changeset
16 case NOTOK:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
17 sleep (5);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
18 continue;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
19
bce86c4163a3 Initial revision
kono
parents:
diff changeset
20 case OK:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
21 (void) signal (SIGHUP, SIG_IGN);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
22 (void) signal (SIGINT, SIG_IGN);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
23 (void) signal (SIGQUIT, SIG_IGN);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
24 (void) signal (SIGTERM, SIG_IGN);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
25 #ifdef SIGTSTP
bce86c4163a3 Initial revision
kono
parents:
diff changeset
26 (void) signal (SIGTSTP, SIG_IGN);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
27 (void) signal (SIGTTIN, SIG_IGN);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
28 (void) signal (SIGTTOU, SIG_IGN);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
29 #endif /* SIGTSTP */
bce86c4163a3 Initial revision
kono
parents:
diff changeset
30 (void) freopen ("/dev/null", "r", stdin);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
31 (void) freopen ("/dev/null", "w", stdout);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
32 break;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
33
bce86c4163a3 Initial revision
kono
parents:
diff changeset
34 default:
bce86c4163a3 Initial revision
kono
parents:
diff changeset
35 done (0);
bce86c4163a3 Initial revision
kono
parents:
diff changeset
36 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
37 break;
bce86c4163a3 Initial revision
kono
parents:
diff changeset
38 }
bce86c4163a3 Initial revision
kono
parents:
diff changeset
39 if (i >= 5)
bce86c4163a3 Initial revision
kono
parents:
diff changeset
40 advise (NULLCP, "unable to fork, so can't push...");
bce86c4163a3 Initial revision
kono
parents:
diff changeset
41 }