int main(int argc, char** argv)
{
  	int child_status, i;

  	if(argc < 4) {
  		printf("Error: Malformed\n");
  		exit(0);
  	}
	
	dirin = argv[1];
	dirout = argv[2];
	group_proceses = atoi(argv[3]);

	if(group_proceses <= 0) {
		printf("Hay %d validadores para crear, por lo que el programa termina aqui\n", group_proceses);
		exit(0);
	}

  	search_files(dirin);

  	if(group_proceses > queue->data.size) {
  		group_proceses = queue->data.size;
  		printf("Hay mas validadores que el numero de tareas (%d). Se crearan solo %d validadores\n", group_proceses,group_proceses);
  	}

  	sons = (pid_t*) realloc(NULL, sizeof(pid_t)*group_proceses);

  	position_queue = queue->data.size-1;

  	i = 0;
  	while(i < group_proceses) {
  		printf("Se va a validar el fichero: %s\n", queue->list[position_queue].list);
  		create_child_process(sons, i);
  		i++;
  		position_queue--;
  		nproceses++;
  	}

  	while(nproceses > 0) {
  		pid_t wpid = wait(&child_status);
  		nproceses--;

  		if(position_queue >= 0) {
			int index_free = get_index_from_value(sons, group_proceses, wpid);
			printf("Se va a validar el fichero: %s\n", queue->list[position_queue].list);
			create_child_process(sons, index_free);
			position_queue--;
			nproceses++;
		}
  	}



	exit(0);
}
Exemple #2
0
uint64_t fork(){
	//print("Forking Bitch");
	if(print_page_count() > 20000){
//		printf("Too Many Processes !\n");
		return -1;
	}
	process* child = create_child_process(current_running_process);
	add_to_readyQ(child);
	return child->pid;
}
Exemple #3
0
int create_child_wait_100usec(const char *exename, char *const argv[], int close_std, int *pipefd, unsigned int timecnt)
{
	pid_t pid;
	int wait_cnt = 0;

	pid = create_child_process(exename, argv, close_std, pipefd);
	if(pid < 0)
		return pid;
	wait_cnt = waitpid_100usec(pid, NULL, timecnt);
	if(timecnt == wait_cnt)
		kill(pid, SIGKILL);
	return wait_cnt;
}
Exemple #4
0
int main(void) {
  char input[MAX_INPUT_LENGTH]; // Input string buffer
  bool terminate = false; // Termination flag
  process_options_t process_opts;

  do {
    prompt_user(input);

    if (strcmp(trim(input), "exit") == 0) { // Look for exit
      terminate = true;
    } else if (parse_input(input, &process_opts) == true) { // Parse input
      create_child_process(exec_program, &process_opts);
      wait(NULL); // Wait for child process
    }
  } while (terminate != true);

  printf("Bye!\n");
  return EXIT_SUCCESS;
}
Exemple #5
0
int run_compiler(const char *cmd, int *exit_code)
{
	HANDLE hChild = create_child_process(cmd);
	if(!hChild) {
		return 1;
	}
	*exit_code = 0;
	if(WAIT_TIMEOUT == WaitForSingleObject(hChild, compiler_max_time + 200)) {
		*exit_code = 2;
		TerminateJobObject(hJOB, 1);
		//WaitForSingleObject(hChild, INFINITE);
	}
	if(! *exit_code)
		GetExitCodeProcess(hChild, (LPDWORD)exit_code);

	CloseHandle(hChild);
	CloseHandle(hJOB);

	return 0;
}
Exemple #6
0
Prolib_t * create_dynamic_process_libs(int sokFd, int n)
{
    int semid;
    Prolib_t * lib;
    int ret;

    semid = sem_init(n);
    if (semid == -1)
        return NULL;

    lib = process_lib_init(n, semid, sokFd);
    if (NULL == lib)
        return NULL;

    ret = create_child_process(n, lib);
    if (ret == -1)
        return NULL;

    wait_child_ready(lib, n);
    return lib;
}
Exemple #7
0
int main(void) {
  create_child_process(&process_parent, &process_child);

  return 0;
}