Commit | Line | Data |
---|---|---|
91978b44 ES |
1 | # include <stdio.h> |
2 | # include "mach.h" | |
3 | # include "Paths.h" | |
4 | /* | |
5 | * this is a simple program to start up the net daemon, | |
6 | * and when it fails, restart it | |
7 | * | |
8 | * | |
9 | */ | |
10 | static int daemon = 32767; /* a nice safe process number */ | |
11 | main(argc,argv) | |
12 | char **argv; { | |
13 | char *s,mchTo; | |
14 | int r,killit(),pid; | |
15 | while((pid = fork()) == -1)sleep(2); | |
16 | if(pid != 0)exit(0); | |
17 | submit(getpid()); | |
18 | signal(SIGQUIT,SIG_IGN); | |
19 | signal(SIGHUP,SIG_IGN); | |
20 | signal(SIGINT,SIG_IGN); | |
21 | signal(SIGTRM,killit); | |
22 | s = argc == 1 ? 0 : argv[1]; | |
23 | mchTo = argc == 1 ? 'a' : lookup(s); | |
24 | for(;;){ | |
25 | while((daemon=fork()) == -1)sleep(2); | |
26 | if(daemon == 0){ | |
27 | execl(NETDAEMON,"netdaemon",s,0); | |
28 | exit(1); | |
29 | } | |
30 | wait(&r); | |
31 | addtolog(mchTo,"Net daemon exit code %d, low byte %o\n", | |
32 | (r>>8), (r&0377)); | |
33 | sleep(100); /* avoid looping too fast */ | |
34 | } | |
35 | } | |
36 | killit(){ | |
37 | kill(daemon,SIGTRM); /* send terminate */ | |
38 | sleep(2); /* wait till cleanup */ | |
39 | kill(daemon,SIGKIL); /* kill in case too */ | |
40 | exit(0); | |
41 | } |