El código del ejercicio 3a) crea un nuevo proceso hijo y luego el proceso padre se bloquea. El proceso hijo ejecuta el comando ls -l
y luego imprime su PID.
El código se explica de la siguiente manera:
fork()
crea un nuevo proceso hijo. El proceso hijo hereda todos los recursos del proceso padre, excepto el PID.p != 0
se evalúa a true
si el proceso es el padre y a false
si el proceso es el hijo.for(;;)
hace que el proceso padre se bloquee.p == 0
se evalúa a true
si el proceso es el hijo y a false
si el proceso es el padre.execl()
ejecuta el comando ls -l
en el proceso hijo.getpid()
devuelve el PID del proceso actual.El resultado de ejecutar el código es que se crea un nuevo proceso hijo que ejecuta el comando ls -l
. El proceso padre se bloquea y no hace nada más.
Aquí hay una explicación más detallada de cada línea de código:
int main() {
La función main()
es la función principal de todo programa C.
int p = fork();
La función fork()
crea un nuevo proceso hijo. El proceso hijo hereda todos los recursos del proceso padre, excepto el PID. El PID es un número único que identifica a cada proceso.
if (p != 0) for(;;);
La expresión p != 0
se evalúa a true
si el proceso es el padre y a false
si el proceso es el hijo. Si el proceso es el padre, la sentencia for(;;)
hace que el proceso se bloquee. Esto significa que el proceso no hará nada más.
if (p == 0) execl("/bin/ls", "ls", "-l", NULL);
La expresión p == 0
se evalúa a true
si el proceso es el hijo y a false
si el proceso es el padre. Si el proceso es el hijo, la función execl()
ejecuta el comando ls -l
en el proceso hijo. El comando ls -l
lista los archivos en el directorio actual.
printf("Mi pid es %d", getpid());
La función printf()
imprime el PID del proceso actual.
return 0;
La función return 0
indica que el programa ha terminado con éxito.
Para escribir su respuesta aquí, Ingresar o Crear una cuenta
Compartir