int Gardian(char *argv[]) { //return(mainprog()); int res=0; while(!Terminated) { if (sigsetjmp(jb,1)) { Log(LOG_CRIT,"Gardian restarting main process in %d sec\n",WAITING); sleep(WAITING); if (Terminated) return(1); execv(argv[0],argv); Log(LOG_CRIT,"Gardian Error %s\n",strerror(errno)); } res=mainprog(); if (res!=0) { Log(LOG_CRIT,"Exit on Error (%d)\n",res); return(res); } } return(res); }
int Gardian(void) { CreatePidFile(PIDFILE); int res=mainprog(); DeletePidFile(PIDFILE); return(res); /*int res=0; while (!Terminated) { if ((res=setjmp(jb))!=0) { Log(LOG_CRIT,"Gardian (%d) : %s\n",res); } res=mainprog(); if (!Terminated) { Log(LOG_CRIT,"Gardian restarting main process in %d sec\n",WAITING); sleep(WAITING); } } return(res);*/ }
int main (int argc,char *argv[]) { // Gestion des signaux signal(SIGTERM,SigHand); signal(SIGINT,SigHand); signal(SIGPOLL,SigHand); signal(SIGSEGV,SigHand); int c; while ((c=getopt(argc,argv,"c:?h"))!=-1) switch(c) { case 'c': // Config File { Log(LOG_DEBUG,"config : %s\n",optarg); memset(Config,0,sizeof(Config)); strncpy(Config,optarg,sizeof(Config)-1); break; } case '?': case 'h': { printf("%s (Build on %s %s)\n",LOG_TITLE,__DATE__,__TIME__); printf("usage: %s:[-c] [-?,h]\n",argv[0]); printf("-c\tConfig file {-c...} default is %s\n",Config); return(0); } break; default:break; } starttime=time(NULL); if (GetConfig(Config)) exit(1); if (DEAMON) { openlog(LOG_TITLE,LOG_NDELAY,LOG_USER); } MXsock=OpenSock(MXADDRESS,MXPORT); if (MXsock == -1) { Log (LOG_CRIT,"Connecting to MX Failed\n"); Log(LOG_NOTICE,"stopped\n"); closelog(); exit(2); } Log(LOG_ALERT,"starting %s, Database is %s on %s\n",LOG_TITLE,DB,DBHOST); if (DEAMON) { switch (fork()) { case -1: Log(LOG_CRIT,"Daemon creation Error\n"); closelog(); exit(1); case 0: setsid(); chdir("/"); umask(0); close(0); close(1); close(2); Log(LOG_NOTICE,"Daemon OK (Pid = %d)\n",getpid()); if (0) { Log (LOG_CRIT,"Connecting Failed\n"); Log(LOG_ALERT,"stopped\n"); closelog(); exit(2); } else { mainprog(); Log(LOG_ALERT,"stopped\n"); closelog(); exit(0); } default : exit(0); } }else { mainprog(); Log(LOG_ALERT,"stopped\n"); exit(0); } }
int main(int argc,char *argv[]) { parsecmd(argc,argv); maininit(); return mainprog(); }