Exemple #1
0
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;
	}
}
Exemple #3
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();
}