int main(int argc, char **argv) { serverOptions(argc, argv); switch (server_quit) { case 1: /* Slow quit -q */ exit(pidKill(pid_file, SIGQUIT) != 0); case 2: /* Quit now -q -q */ exit(pidKill(pid_file, SIGTERM) != 0); default: /* Restart -q -q -q * Restart-If -q -q -q -q */ if (pidKill(pid_file, SIGTERM) && 3 < server_quit) { fprintf(stderr, "no previous instance running: %s (%d)\n", strerror(errno), errno); return EXIT_FAILURE; } sleep(2); } if (daemon_mode) { if (daemon(1, 1)) { fprintf(stderr, "%s(%d): %s\n", __FILE__, __LINE__, strerror(errno)); return EX_SOFTWARE; } if (atexit(atExitCleanUp)) { fprintf(stderr, "%s(%d): %s\n", __FILE__, __LINE__, strerror(errno)); return EX_SOFTWARE; } openlog("dnsd", LOG_PID|LOG_NDELAY, LOG_DAEMON); } else { LogOpen("(standard error)"); } return serverMain(); }
//TODO dynamically maintain all array sizes int main(int argc, char** argv) { int fr_no=5, s=0; char rep_policy[20] = "FIFO"; char logpath[1024] = "input.txt"; for (s=1; s<argc; s++) { if (strcmp(argv[s], "-f")==0) { fr_no = atoi(argv[++s]); } else if (strcmp(argv[s], "-r")==0) { strcpy(rep_policy, argv[++s]); } else if (strcmp(argv[s], "-i")==0) { strcpy(logpath, argv[++s]); } else if (strcmp(argv[s], "-h")==0) { printf("help mode"); serverOptions(); } else { printf("\n\nNo Options Passed, ...\n"); } } int i, j=0,nf=0; if(fr_no>0){ nf=fr_no; } else{ printf("Enter proper frame value\n"); exit(0); } unsigned int input[16] ={0,1,2,3,0,1,2,3,0,1,2,3,4,5,6,7};//{1,2,3,4,1,2,5,1,2,3,4,5}; count_page=0; //{ 1, 2, 3, 1, 1, 2, 4, 1, 3, 2, 1, 3 };// //TODO load the array size from file inputs //Reading from file FILE *f; char res[1024]; f = fopen(logpath,"r"); if (f == NULL) {perror ("Error opening file..Exiting...\n");exit(0);} else { fgets(res,1024,f); //puts(res); char* str=NULL; char delim[] = " "; str=strtok(res,delim); while(str!=NULL) { input[i]=atoi(str); i++; count_page++; str = strtok(NULL," "); } } printf("%d %s %s\n", fr_no, rep_policy, logpath); if (strcmp(rep_policy,"LRU-REF8")==0) { printf("Executing LRU-Ref8\n"); pr1=lruRefBit(input, nf); pr2 = optim(input, nf); compare(rep_policy); return 0; } /*else if(==2){ optim(input,nf); return 0; }*/ else if (strcmp(rep_policy,"LRU-STACK")==0) { printf("Executing LRU-STACK\n"); pr1= lruStack(input, nf); pr2 = optim(input, nf); compare(rep_policy); return 0; } else if (strcmp(rep_policy,"LFU")==0) { printf("Executing LFU\n"); pr1=lfu(input, nf); pr2 = optim(input, nf); compare(rep_policy); return 0; } else if (strcmp(rep_policy,"LRU-CLOCK")==0) { pr1 = lruref8bit(input,nf); pr2 = optim(input, nf); compare(rep_policy); } else { pr1 = fifo(input, nf); pr2 = optim(input, nf); compare(rep_policy); return 0; } }
int main(int argc, char **argv) { /* Get this now so we can use the event log. */ ReportInit(); serverOptions(argc, argv); if (0 < server_quit) { pid_t pid; int length; HANDLE signal_quit; char event_name[128]; pid = pidLoad(pid_file); length = snprintf(event_name, sizeof (event_name), "Global\\%ld-%s", (long) pid, server_quit == 1 ? "QUIT" : "TERM"); if (sizeof (event_name) <= length) { ReportLog(EVENTLOG_ERROR_TYPE, "service %s pid file name too long", _NAME); return EX_SOFTWARE; } signal_quit = OpenEvent(EVENT_MODIFY_STATE , 0, event_name); if (signal_quit == NULL) { ReportLog(EVENTLOG_ERROR_TYPE, "service %s quit error: %s (%d)", _NAME, strerror(errno), errno); return EX_OSERR; } SetEvent(signal_quit); CloseHandle(signal_quit); return EXIT_SUCCESS; } if (windows_service != NULL) { if (winServiceInstall(*windows_service == 'a', _NAME, NULL) < 0) { ReportLog(EVENTLOG_ERROR_TYPE, "service %s %s error: %s (%d)", _NAME, windows_service, strerror(errno), errno); return EX_OSERR; } return EXIT_SUCCESS; } openlog(_NAME, LOG_PID|LOG_NDELAY, log_facility); if (daemon_mode) { if (pidSave(pid_file)) { syslog(LOG_ERR, log_init, SERVER_FILE_LINENO, strerror(errno), errno); return EX_SOFTWARE; } if (pidLock(pid_file) < 0) { syslog(LOG_ERR, log_init, SERVER_FILE_LINENO, strerror(errno), errno); return EX_SOFTWARE; } winServiceSetSignals(&signals); if (winServiceStart(_NAME, argc, argv) < 0) { ReportLog(EVENTLOG_ERROR_TYPE, "service %s start error: %s (%d)", _NAME, strerror(errno), errno); return EX_OSERR; } return EXIT_SUCCESS; } #ifdef NOT_USED { long length; char *cwd, *backslash, *server_root, default_root[256]; /* Get the absolute path of this executable and set the working * directory to correspond to it so that we can find the options * configuration file along side the executable, when running as * a service. (I hate using the registry.) */ if ((length = GetModuleFileName(NULL, default_root, sizeof default_root)) == 0 || length == sizeof default_root) { ReportLog(EVENTLOG_ERROR_TYPE, "failed to find default server root"); return EXIT_FAILURE; } /* Strip off the executable filename, leaving its parent directory. */ for (backslash = default_root+length; default_root < backslash && *backslash != '\\'; backslash--) ; server_root = default_root; *backslash = '\0'; /* Remember where we are in case we are running in application mode. */ cwd = getcwd(NULL, 0); /* Change to the executable's directory for default configuration file. */ if (chdir(server_root)) { ReportLog(EVENTLOG_ERROR_TYPE, "failed to change directory to '%s': %s (%d)\n", server_root, strerror(errno), errno); exit(EX_OSERR); } if (cwd != NULL) { (void) chdir(cwd); free(cwd); } } #endif return serverMain(); }