es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Aplicaciones de la función system() en el inicio y espera de un nuevo proceso.

Actualmente estoy aprendiendo Programación de sistemas y me encontré con el uso de int system(const char* command) en el capítulo de Gestión de procesos. Dicen que si un proceso está generando un hijo solo para esperar de inmediato a su terminación, es mejor usar system(const char* command).

¿Qué significa la frase “El parámetro de comando se agrega a los argumentos /bin/sh -c. “?

Y cómo están asociadas las llamadas al sistema fork(), exec(), waitpid() con esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La frase “El parámetro del comando se añade a los argumentos /bin/sh -c.” significa que la función system() añade el comando especificado a los argumentos de /bin/sh -c. Esto significa que el comando se ejecuta mediante un proceso de shell, que lo interpreta como si se hubiera introducido en línea de comandos.

    En cuanto a la asociación de las llamadas al sistema fork(), exec() y waitpid() con system(const char* command), se puede decir que la función system() crea un nuevo proceso utilizando la llamada al sistema fork() y luego utiliza la llamada al sistema exec() para reemplazar la imagen del proceso hijo con la imagen del shell, que luego ejecuta el comando especificado utilizando la llamada al sistema exec().

    Finalmente, el proceso padre espera a que el proceso hijo termine para poder recuperar el estado del hijo utilizando la llamada al sistema waitpid(). Esta espera es similar a la del enfoque de generar un hijo y luego esperar su terminación, pero system() se encarga de todos los pasos necesarios internamente.

Comments are closed.