CUESTIÓN

¿Qué significan los parámetros de las funciones del grupo exec?

SOLUCIÓN

Para comprender esto bien, hay que haber leído con anterioridad los dos apartados de la sesión 1 que hacen referencia a los argumentos que se le pasa a un programa y cómo los recibe la función main de dicho programa. Lo podéis encontrar aquí.

Cuando invocamos una función de la familia exec con éxito, estamos indicando al proceso que deje por completo el código que está ejecutando actualmente y pase, sin posibilidad de vuelta atrás, a ejecutar un nuevo código situado en el fichero ejecutable que le indicamos. Este nuevo código provendrá de la compilación de un programa en C con su nueva función main. ¿Cuáles son los argumentos que recibirá esa función main? La respuesta está en lo que le pasamos a la función de la familia exec.

Veámoslo con un ejemplo. Supongamos que deseamos que un proceso pase a ejecutar el fichero /usr/bin/cuenta con los argumentos "1 2 3". La función main de ese fichero debe recibir como argumentos lo siguiente:

Argumentos de main
argc4
argv[0]"cuenta"
argv[1]"1"
argv[2]"2"
argv[3]"3"


Para efectuar el cambio, vamos a elegir la llamada al sistema execl. La llamada al sistema que debemos realizar aparecería así en nuestro programa:
    execl("/usr/bin/cuenta", "cuenta", "1", "2", "3", NULL);
Es costumbre que el argumento 0 coincida con el nombre del fichero ejecutable, pero bien os daréis cuenta de que nada os obliga a ello.


© 2000 Guillermo González Talaván.