|
|
1.1 root 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.