Práctica de creación de procesos
El objetivo de esta práctica es:
- Aprender a usar las llamadas al sistema fork() y exec() para ejecutar otros programas desde el nuestro.
- Aprender a usar wait() o waitpid() para esperar a que un proceso hijo termine su ejecución.
- Aprender a gestionar los errores en las llamadas al sistema y la terminación de nuestro programa.
Actividad
Desarrolla un programa que use las llamadas al sistema fork() y alguna de las llamadas de la familia exec() para ejecutar el siguiente programa con los argumentos indicados:
ls -lR /etc
El programa desarrollado debe esperar hasta que el comando 'ls' anterior termine antes de finalizar su propia ejecución. Cuando el programa termine, solo debe usar el valor de salida 0 si todo se ha podido realizar correctamente. Es decir, si fork() pudo crear el proceso hijo, exec() pudo cargar el programa indicado en el proceso hijo y el proceso hijo termino con éxito (valor de salida 0). En cualquier otro caso, nuestro programa debe terminar con un valor distinto de 0.
Recursos
- Apartado 9.7 de los apuntes sobre operaciones como la creación y terminación de procesos.
- Repositorio de ejemplos del capítulo 9.
Solución
El programa fork-exec.c del repositorio de ejemplos es una posible solución del ejercicio, con la única salvedad de que ejecuta el comando 'ls -l', en lugar de 'ls -lR /etc', como se pide en el enunciado de la actividad.Última modificación: domingo, 21 de agosto de 2022, 20:55