¿Para qué se utilizan las diferentes versiones de exec en C y C ++?

91

Estas son todas las versiones de exec que se pueden usar en C (y C ++)

execl
execle
execlp
execv
execve
execvp

¿Cual es la diferencia entre ellos? ¿Cómo sabes cuál usar?

ninja del nodo
fuente

Respuestas:

181

Las diferencias son combinaciones de:

  1. L vs V : si desea pasar los parámetros al programa ejecutado como

    • L : parámetros individuales en la llamada (lista de argumentos variable): execl(), execle(), execlp(), yexeclpe()
    • V : como una matriz de char * execv(), execve(), execvp(), yexecvpe()

    El formato de matriz es útil cuando la cantidad de parámetros que se enviarán al proceso ejecutado es variable, como no se conoce de antemano, por lo que no puede ingresar una cantidad fija de parámetros en una llamada de función.

  2. E : Las versiones con una 'e' al final le permiten, además, pasar una matriz de caracteres * que son un conjunto de cadenas agregadas al entorno de procesos generados antes de que se inicie el programa ejecutado. Otra forma más de pasar parámetros, en realidad.

  3. P : Las versiones con 'p' allí usan la variable de entorno PATH para buscar el archivo ejecutable nombrado para ejecutar. Las versiones sin la 'p' requieren que se anteponga una ruta de archivo absoluta o relativa al nombre de archivo del ejecutable si no está en el directorio de trabajo actual.

Christo
fuente
1
La mejor explicación que he visto hasta ahora. Es casi tan breve como la documentación / referencia oficial, pero es mil veces más expresivo, informativo y comprensible. Gracias.
Akito
5

Opengroup es una de las mejores referencias generales para las funciones básicas de c / c ++.

Los documentos para exec * están aquí: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html

IanNorton
fuente
2
esto realmente no responde a la pregunta y es solo un enlace.
Jean-François Fabre
Antes de llegar aquí, leí la documentación en el sitio web, pero no ayudó mucho. Las explicaciones son muy breves, aunque deben ser elaboradas. Además, es difícil encontrar la explicación correcta de lo que está buscando, si está buscando desde cero.
Akito
-4

Es la extensión Posix de la biblioteca en tiempo de ejecución C. Si la documentación oficial de Posix es insuficiente, puedo recomendar el libro - Samuel P. Harbison, Guy L.Steele, 2002 "CA Reference" Página # 416 - cubrir esa pregunta.

bruziuz
fuente
2
Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden dejar de ser válidas si cambia la página enlazada. - De la crítica
31piy
Los enlaces eran a amazon y posxis standart para ser útiles para el lector. Ok, eliminé los enlaces como me pediste, incluso yo no estoy de acuerdo con que esto sea mejor. Quite su donwvote si ahora es más legible.
bruziuz
1
No voté negativamente por tu respuesta. Acabo de recibir mi revisión de su respuesta, que pensé que era de baja calidad. No quise quitar los enlaces. El punto aquí es incluir extractos relevantes del enlace que ayuden a los futuros lectores a comprender la respuesta al instante. Publicar los enlaces en la respuesta no ayuda a nadie.
31piy