fork en C
fork retorna dos veces: cero en el hijo y el pid del hijo en el padre.
#include <stdio.h>
#include <sys/wait.h>
#include <unistd.h>
int main(void) {
pid_t pid = fork();
if (pid < 0) {
perror("fork");
return 1;
}
if (pid == 0) {
printf("child %d\n", (int) getpid());
return 7;
}
int status = 0;
waitpid(pid, &status, 0);
if (WIFEXITED(status)) {
printf("child exited with %d\n", WEXITSTATUS(status));
}
return 0;
}
Cómo funciona
- Ambos procesos continúan desde la misma línea.
- El padre debe esperar, o deja un zombi.
- Un retorno de -1 significa que el fork falló.
Palabras clave y builtins usados aquí
ifintpid_treturnvoid
El intento, en números
- Líneas
- 23
- Caracteres a escribir
- 345
- Tokens
- 108
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 62 segundos.
Paso 1 de 4 en Procesos y señales; paso 7 de 14 en Programación de sistemas.