int pid, status;
for (int i = 0; i < nfilhos; i++) {
if ((pid = fork()) == 0) {
//do anything
_exit(0);
} else {
pid_t terminated = wait(&status);
// do anything
}
}
int pid, status;
for (int i = 0; i < nfilhos; i++) {
if ((pid = fork()) == 0) {
//do anything
_exit(0);
}
}
for (int i = 0; i < nfilhos; i++) {
pid_t terminado = wait(&status);
}
for (int i = 0; i < nfilhos; i++) {
if ((pid = fork()) == 0) {
//do anything
} else {
pid_t terminado = wait(&status);
_exit(0);
}
}
Exec's podem ser classificados através das suas letras.
- execv recebe um array de
char*
que termina em NULL - execl recebe uma lista terminada com NULL utilizando o mecanismo varargs
- execvp, execlp recebe nome de um programa e procura-o no
Path
- execve, execle recebe um array de
char*
que termina em NULL com valores para variáveis de ambiente na forma "VARIABLE=value"