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
|
argc | 4 |
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.