|
|
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.