secundarios secundario represion qué que psicoanalisis procesos proceso primario placer hartmann ejemplos displacer dedica c process operating-system fork system-calls

represion - procesos secundarios ejemplos



Haga que los padres esperen a que finalicen todos los procesos secundarios (3)

POSIX define una función: wait(NULL); Es la taquigrafía de waitpid(-1, NULL, 0); , que suspenderá la ejecución del proceso de llamada hasta que finalice cualquier proceso secundario. Aquí, el primer argumento de waitpid indica esperar a que finalice cualquier proceso hijo.

En su caso, haga que el padre lo llame desde su sucursal.

Espero que alguien pueda arrojar algo de luz sobre cómo hacer que el padre espere a que TODOS los procesos secundarios terminen antes de continuar después de la bifurcación. Tengo un código de limpieza que quiero ejecutar, pero los procesos secundarios deben haberse devuelto antes de que esto pueda suceder.

for (int id=0; id<n; id++) { if (fork()==0) { // Child exit(0); } else { // Parent ... } ... }


Utilice waitpid () de esta manera:

pid_t childPid; // the child process that the execution will soon run inside of. childPid = fork(); if(childPid == 0) // fork succeeded { // Do something exit(0); } else if(childPid < 0) // fork failed { // log the error } else // Main (parent) process after fork succeeds { int returnStatus; waitpid(childPid, &returnStatus, 0); // Parent process waits here for child to terminate. if (returnStatus == 0) // Verify child process terminated without error. { printf("The child process terminated normally."); } if (returnStatus == 1) { printf("The child process terminated with an error!."); } }


pid_t child_pid, wpid; int status = 0; //Father code (before child processes start) for (int id=0; id<n; id++) { if ((child_pid = fork()) == 0) { //child code exit(0); } } while ((wpid = wait(&status)) > 0); // this way, the father waits for all the child processes //Father code (After all child processes end)