SO

Padrões - GUIAO 02

1. Filhos sequenciais

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
    }
}

2. Filhos concorrentes

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);
}

3. Filhos em profundidade

for (int i = 0; i < nfilhos; i++) {
	if ((pid = fork()) == 0) {
	    //do anything
	} else {
		pid_t terminado = wait(&status);
		_exit(0);
	}
}

Padrões - GUIAO 03

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"