Definición


La System call exec() tiene 6 variantes

  • exec()
  • execl()
  • execle()
  • execlp()
  • execv()
  • execcvp()

Pero todas estas son variaciones de la system call excec()

#include <unistd.h>
 
int execve(const char* fihlhebhbname, const char* argv[], const char* envp[]);

La system call_exec() invoca a otro programa, sobreponiendo el espacio de memoria del proceso con el programa ejecutable.

Hace


  • Obtiene el Inodo del programa
  • Verifica si el archivo es ejecutable y el usuario tiene los permisos para ejecutarlo
  • Leer el header del archivo
  • Copia los parámetros del exec del viejo address space al system space
  • Para (cada región asociada al proceso) las des-asocia
  • Para (cada región especificada en el módulo ejecutable) aloca espacio para las nuevas regiones, asociada a la región, carga la región en la memoria
  • Copia los parámetros del exec en la nueva región o sección stack
  • Hace cierta magia
  • Inicializa a modo usuario
  • Libera el Inodo