static void *initproc_run(int arg1, void *arg2) { switch(curtest) { case 0: return NULL; case 1: processSetUp(); break; case 2: processSetUp(); break; case 3: processSetUp(); break; case 4: processSetUp(); break; case 5: processSetUp(); break; case 6: producer_consumer();break; case 7: deadlock();break; case 8: reader_writer();break; case 9: shellTest();break; case 10: dead_own(); break; case 11: vfs_test_setup(); break; case 12: add_tests(); break; case 13: ut_vmmap(); break; } int status; while(!list_empty(&curproc->p_children)) { pid_t child = do_waitpid(-1, 0, &status); /*dbg(DBG_INIT,"Process %d cleaned successfully\n", child);*/ } return NULL; }
int ccnx_Portal_Reader(char *keystoreFileName, const char *password, const char *uri) { parcSecurity_Init(); PARCIdentity *identity = getIdentity_FromFile(keystoreFileName, password); if (identity != NULL) { CCNxPortalFactory *factory = ccnxPortalFactory_Create(identity); reader_writer(factory, uri); ccnxPortalFactory_Release(&factory); parcIdentity_Release(&identity); } parcSecurity_Fini(); return 0; }
int ejecutar_script(char* path_script, char* name_script, int(*reader_writer)(int fdreader, int fdwriter), pthread_mutex_t* mutex, int c_ftok){ /* key_t shmkey; int shmid; sem_t *sem; sem = sem_crear(&shmid, &shmkey, c_ftok); */ int pipes[NUM_PIPES][2]; pthread_mutex_lock(mutex); // pipes for parent to write and read if (pipe(pipes[PARENT_READ_PIPE]) == -1) handle_error("pipe"); if ((pipe(pipes[PARENT_WRITE_PIPE])) == -1) handle_error("pipe"); /////////////////////////////////////////// pid_t pid; pid = fork(); pthread_mutex_unlock(mutex); if (pid < 0){ //handle_error("fork pipe stdin stdout"); perror("fork!!!!!!!!!!!"); return -1; } if (pid == 0) { if (dup2(pipes[PARENT_WRITE_PIPE][READ_FD], STDIN_FILENO) < 0) { perror("dup2 STDIN_FILENO"); _exit(1); } if (dup2(pipes[PARENT_READ_PIPE][WRITE_FD], STDOUT_FILENO) < 0) { perror("dup2 STDIN_FILENO"); _exit(1); } close(pipes[PARENT_WRITE_PIPE][READ_FD]); close(pipes[PARENT_READ_PIPE][WRITE_FD]); close(pipes[PARENT_READ_PIPE][READ_FD]); close(pipes[PARENT_WRITE_PIPE][WRITE_FD]); //execl("/usr/bin/sort", "sort", (char*) NULL); //sem_post(sem); int rs = 1; do { rs = execl(path_script, name_script, (char*) NULL); perror("Errro execv"); fprintf(stderr, "hola path:%s, name: %s, Res: %d\n", path_script, name_script, rs); usleep(100000); _exit(127); } while (rs < 0); close(pipes[PARENT_READ_PIPE][READ_FD]); close(pipes[PARENT_WRITE_PIPE][WRITE_FD]); _exit(127); } else { /* printf("AAAAAAAAAAntes sem_wait(sem);\n"); sem_wait(sem); printf("DDDDDDDDDESPUES sem_wait(sem);\n"); shmctl(shmid, IPC_RMID, 0); sem_destroy (sem); */ int rs; rs = close(pipes[PARENT_WRITE_PIPE][READ_FD]); if(rs!=0){ perror("close1"); } rs = close(pipes[PARENT_READ_PIPE][WRITE_FD]); if(rs!=0){ perror("close2"); } rs = reader_writer(pipes[PARENT_READ_PIPE][READ_FD], pipes[PARENT_WRITE_PIPE][WRITE_FD]); int status; waitpid(pid, &status, 0); //puts("listo"); return rs; } }