BSD 3 development
[unix-history] / usr / src / cmd / net / netstart.c
CommitLineData
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 */
10static int daemon = 32767; /* a nice safe process number */
11main(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 }
36killit(){
37 kill(daemon,SIGTRM); /* send terminate */
38 sleep(2); /* wait till cleanup */
39 kill(daemon,SIGKIL); /* kill in case too */
40 exit(0);
41 }