Beispiel #1
0
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);
}
Beispiel #2
0
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);*/
}
Beispiel #3
0
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);
	}
}
Beispiel #4
0
int main(int argc,char *argv[])
{
  parsecmd(argc,argv);
  maininit();
  return mainprog();
}