Commit | Line | Data |
---|---|---|
442dbcf7 | 1 | # include "defs.h" |
4b9ccde7 C |
2 | /* sccs id variable */ |
3 | static char *netstart_sid = "@(#)netstart.c 1.2"; | |
4 | ||
442dbcf7 BJ |
5 | /* |
6 | * this is a simple program to start up the net daemon, | |
7 | * and when it fails, restart it | |
8 | * | |
9 | */ | |
10 | static int daemon = 32767; /* a nice safe process number */ | |
11 | main(argc,argv) | |
12 | char **argv; { | |
13 | int r,killit(),pid; | |
14 | while((pid = fork()) == -1)sleep(2); | |
15 | if(pid != 0)exit(EX_OK); | |
16 | submit(getpid()); | |
17 | signal(SIGQUIT,SIG_IGN); | |
18 | signal(SIGHUP,SIG_IGN); | |
19 | signal(SIGINT,SIG_IGN); | |
20 | signal(SIGTERM,killit); | |
21 | /* will set remote */ | |
22 | parseargs(argc,argv); | |
23 | addtolog(remote,"Netstart started, process id #%d\n",getpid()); | |
24 | for(;;){ | |
25 | while((daemon=fork()) == -1)sleep(2); | |
26 | if(daemon == 0){ | |
27 | argv[0] = "netdaemon"; | |
28 | argv[argc] = 0; | |
29 | execv(NETDAEMON,argv); | |
30 | exit(EX_UNAVAILABLE); | |
31 | } | |
32 | wait(&r); | |
33 | addtolog(remote,"Net daemon exit code %d, low byte 0%o\n", | |
34 | (r>>8), (r&0377)); | |
35 | sleep(100); /* avoid looping too fast */ | |
36 | } | |
37 | } | |
38 | killit(){ | |
39 | kill(daemon,SIGTERM); /* send terminate */ | |
40 | sleep(2); /* wait till cleanup */ | |
41 | kill(daemon,SIGKILL); /* kill in case too */ | |
42 | exit(EX_OK); | |
43 | } | |
44 | /* add to allow netstart.c to load */ | |
45 | initseqno(){}; |