Esta división ha sido probado por especialistas para asegurar la veracidad de nuestra esta reseña.
Solución:
No hay exec
llamada al sistema – esto se usa generalmente para referirse a todos los execXX
llamadas en grupo. Todos hacen esencialmente lo mismo: cargar un nuevo programa en el proceso actual y proporcionarle argumentos y variables de entorno. Las diferencias están en cómo se encuentra el programa, cómo se especifican los argumentos y de dónde proviene el entorno.
-
Las llamadas con
v
en el nombre tomar un array parámetro para especificar elargv[]
array del nuevo programa. El final de los argumentos se indica mediante un array elemento que contieneNULL
. -
Las llamadas con
l
en el nombre toma los argumentos del nuevo programa como una lista de argumentos de longitud variable para la función misma. El final de los argumentos se indica mediante un(char *)NULL
argumento. Siempre debes incluir el tipo cast, porqueNULL
se permite que sea una constante entera, y las conversiones de argumentos predeterminadas al llamar a una función variable no la convertirán en un puntero. -
Las llamadas con
e
en el nombre tome un argumento adicional (o argumentos en ell
caso) para proporcionar el entorno del nuevo programa; de lo contrario, el programa hereda el entorno del proceso actual. Esto se proporciona de la misma manera que elargv
array: un array porexecve()
argumentos separados paraexecle()
. -
Las llamadas con
p
en el nombre busque elPATH
variable de entorno para encontrar el programa si no tiene un directorio (es decir, no contiene un/
personaje). De lo contrario, el nombre del programa siempre se trata como una ruta al ejecutable. -
FreeBSD 5.2 agregó otra variante:
execvP
(con mayúsculasP
). Esto es comoexecvp()
pero en lugar de obtener la ruta de búsqueda delPATH
variable de entorno, es un parámetro explícito de la función:
int execvP(const char *file, const char *search_path, char *const argv[]);
Usar man exec
y leer:
The execv(), execvp(), and execvpe() functions provide an array of pointers to
null-terminated strings that represent the argument list available to the new program.
The first argument, by convention, should point to the filename associated with the file
being executed. The array of pointers must be terminated by a NULL pointer.
execv
int execv(const char *path, char *const argv[]);
Entonces pasas un array como parámetros
int execle(const char *path, const char *arg,
..., char * const envp[]);
Casi lo mismo, pero no como un arraysino más bien como una lista de valores (cadenas), seguida de un array el designa el entorno.
Aquí:
int execvp(const char *file, char *const argv[]);
Está llamando a un archivo, sin ruta, por lo que espera que ya esté en la derecha path
antes de llamar
Por último, pero no menos importante:
int execve(const char *filename, char *const argv[],
char *const envp[]);
Similar al anterior, pero ahora tiene dos matrices, para argumentos y variables de entorno.
Dado que todas estas funciones pertenecen a la familia exec(), permítanme differentiate
de acuerdo a extra characters
con los significados,
1.execve():
p : no presente => el nombre del programa a ejecutar se tomará de pathname
v : presente => el argumento se pasará como array
e : presente => el entorno se tomará de envp argument
2.execle():
p : no presente => el nombre del programa a ejecutar se tomará de pathname
l : presente => el argumento se pasará como list
e : presente => el entorno se tomará de envp argument
3.execlp():
p : presente => el nombre del programa a ejecutar se tomará de filename
especificado o el sistema search for program file
en PATH
variable.
l : presente => el argumento se pasará como list
e : no presente => el entorno se tomará de caller's environ
4.execvicepresidente():
p : presente => el nombre del programa a ejecutar se tomará de filename
especificado o el sistema search for program file
en PATH
variable.
v : presente => el argumento se pasará como array
e : no presente => el entorno se tomará de caller's environ
5.execv():
p : no presente => el nombre del programa a ejecutar se tomará de pathname
v : presente => el argumento se pasará como array
e : no presente => el entorno se tomará de caller's environ
6.execyo():
p : no presente => el nombre del programa a ejecutar se tomará de pathname
l : presente => el argumento se pasará como list
e : no presente => el entorno se tomará de caller's environ
Reseñas y calificaciones
Nos puedes patrocinar nuestra función exponiendo un comentario o puntuándolo te estamos agradecidos.