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