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); }
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; }
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; }
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; }
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; }
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; }
int main(void) { create_child_process(&process_parent, &process_child); return 0; }