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
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 realidadexec()
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.
system(3)
no es una llamada al sistema, es ' una función de biblioteca que hace llamadas al sistema.system()
siempre regresa.