annotate sbr/push.c @ 12:441a2190cfae

Lion fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 21 Apr 2012 13:10:49 +0900
parents bce86c4163a3
children
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
12
441a2190cfae Lion fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
3 static char ident[] = "@(#)$Id: push.c,v 1.1.1.1 2005/04/18 14:46:06 kono Exp $";
0
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 }