int main(int argc, char **argv) { pid_t pid; char *conf = NULL; /* get configure file */ if(getopt(argc, argv, "c:") != 'c') { fprintf(stderr, "Usage:%s -c config_file\n", argv[0]); _exit(-1); } conf = optarg; // locale setlocale(LC_ALL, "C"); // signal signal(SIGTERM, &lechod_stop); signal(SIGINT, &lechod_stop); signal(SIGHUP, &lechod_stop); signal(SIGPIPE, SIG_IGN); pid = fork(); switch (pid) { case -1: perror("fork()"); exit(EXIT_FAILURE); break; case 0: //child process if(setsid() == -1) exit(EXIT_FAILURE); break; default://parent _exit(EXIT_SUCCESS); break; } if((sbase = sbase_init()) == NULL) { exit(EXIT_FAILURE); return -1; } fprintf(stdout, "Initializing from configure file:%s\n", conf); /* Initialize sbase */ if(sbase_initialize(sbase, conf) != 0 ) { fprintf(stderr, "Initialize from configure file failed\n"); return -1; } fprintf(stdout, "Initialized successed\n"); //sbase->running(sbase, 3600); sbase->running(sbase, 0); }
int main(int argc, char **argv) { pid_t pid; char *conf = NULL, *p = NULL, ch = 0; int is_daemon = 0; /* get configure file */ while((ch = getopt(argc, argv, "c:d")) != (char)-1) { if(ch == 'c') conf = optarg; else if(ch == 'd') is_daemon = 1; } if(conf == NULL) { fprintf(stderr, "Usage:%s -d -c config_file\n", argv[0]); _exit(-1); } /* locale */ setlocale(LC_ALL, "C"); /* signal */ signal(SIGTERM, &nowd_stop); signal(SIGINT, &nowd_stop); signal(SIGHUP, SIG_IGN); signal(SIGPIPE, SIG_IGN); //daemon if(is_daemon) { pid = fork(); switch (pid) { case -1: perror("fork()"); exit(EXIT_FAILURE); break; case 0: //child if(setsid() == -1) exit(EXIT_FAILURE); break; default://parent _exit(EXIT_SUCCESS); break; } } setrlimiter("RLIMIT_NOFILE", RLIMIT_NOFILE, 10240); if((sbase = sbase_init()) == NULL) { exit(EXIT_FAILURE); return -1; } fprintf(stdout, "Initializing from configure file:%s\n", conf); /* Initialize sbase */ if(sbase_initialize(sbase, conf) != 0 ) { fprintf(stderr, "Initialize from configure file failed\n"); exit(EXIT_FAILURE); return -1; } fprintf(stdout, "Initialized successed\n"); sbase->running(sbase, 0); //sbase->running(sbase, 60000000); sbase->stop(sbase); //sbase->running(sbase, 90000000);sbase->stop(sbase); sbase->clean(sbase); if(dict)iniparser_free(dict); return 0; }