Entiendo que mientras exec () no regresa después de que se ejecuta en Unix, system () puede o puede no regresa dependiendo de la situación. Pero ¿alguien puede explicar por qué la llamada al sistema exec () no regresa y también las diferencias entre exec () y system () en el sistema operativo Unix

Comentarios

  • Tenga en cuenta que system(3) no es una llamada al sistema, es ' una función de biblioteca que hace llamadas al sistema.
  • system() siempre regresa.

Responder

system () es equivalente a fork () + exec () + wait (); esto significa que cuando un proceso ejecuta la función system (), crea un nuevo proceso y espera el final de este proceso. El nuevo proceso ejecuta el comando en su propio entorno, cuando ha terminado, la persona que llama recibe la señal secundaria.

Para más información man exec man system

«exec reemplaza la imagen del proceso actual con una nueva imagen del proceso», esto significa que cuando sale, el llamador también sale, ya que el llamador se ha convertido en el nuevo proceso.

Comentarios

  • Hay ' un poco más que eso. system() en realidad exec() es su shell predeterminado y le pasa la cadena para que la procese, por lo que puede, por ejemplo, usar una canalización y otras características del shell.

Answer

Esta es una llamada al sistema en Unix OS que reemplaza el proceso que se está ejecutando actualmente con información del programa binario.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *