SISTEMAS OPERATIVOS II
Tercer curso Ingeniería Informática. Curso 2005-2006
Práctica 3: Procesos en UNIX. Entorno
Añadir al intérprete de comandos de comandos de la práctica anterior los siguientes
comandos.
- ent -m|-e
- Muestra la lista de todas las variables de
entorno. Para cada variable de entorno muestra, en una misma línea la variable
(nombre=valor), la dirección de memoria donde se almacena la variable (el valor del puntero,
e[i]) y la dirección de memoria donde se almacena el puntero (&e[i]). El acceso será mediante
environ o mediante el tercer argumento de main según se indique -e o -m. Ha de
especificarse ebligatoriamente -e o -m. ADEMÁS, en cualquiera de los dos casos debe
mostrase el valor (como punteros) del tercer argumento de main y de environ así como
las direcciones de memoria donde están almacenados el tercer argumento de main y environ.
Ejemplo
$ent -e
......
.......
.......
ffbefcb8->env[29]=(ffbeff86) PATH=/usr/bin:/usr/local/bin:
ffbefcbc->env[30]=(ffbeffa5) LC_MONETARY=es
ffbefcc0->env[31]=(ffbeffb4) LC_COLLATE=es
ffbefcc4->env[32]=(ffbeffc2) _INIT_NET_STRATEGY=none
ffbefcc8->env[33]=(ffbeffda) _=./entorno
20a34->environ=ffbefc44 | ffbefc24->env=ffbefc44 | ffbefc20->argv=ffbefc3c
$
- set -e|-m var valor
- Establece el valor de la variable de entorno
var. Si se indica -m el acceso a las variables será mediante el tercer argumento de
main, si se indica -e mediante environ. Si la variable de entorno no existe no la crea. NO
DEBE USARSE por tanto las funciones de librería setenv ni putenv. El acceso será
usando los punteros de environ o del tercer argumento de main().
- put var=valor
- Establece el valor de la variable de entorno var.
Usa la función de librería putenv. Si la variable no existe la crea.
- get var1, var2 ...
- Devuelve los valores de las variables de entorno var1, var2 ..
obtenidos mediante el tercer argumento de main, environ y la función de
librería getenv. Para cada caso imprime, además el la variable, la dirección de
memoria donde está la variable (su valor como puntero) y la dirección donde se almacena el
puntero (salvo en el caso de obtenerla con getenv).
$get TERM
3er arg: "TERM=vt100" (ffbeff7b) puntero -> ffbefcd8
environ: "TERM=vt550" ( 2692a) puntero -> 21fb0
getenv: "vt550" ( 2692f)
$
- $$
- ejecucion con entorno cambiado Modificar la ejecución sin crear proceso
(comando exec) así como las ejecuciones en primer y segundo plano de la práctica anterior
para que pueda especificarse una lista de variables de entorno que constituirán el nuevo entorno
del proceso. Así
- exec com pasaría a ser exec LISTA_VARIABLES com
- com pasaría a ser LISTA_VARIABLES com
- com & pasaría a ser LISTA_VARIABLES com&
donde com sigue representando un ejecutable y sus parámetros. Debe usarse la llamada
execve para especificar el entorno. La lista de variables de entorno contiene sólo los
nombres de las variables de entorno, no sus valores, que deben obtenerse de environ. Si la
lista esta vacía tendremos la ejecución con execv de la práctica anterior. (pista: no
hay que hacer funciones nuevas, sólo modificar una de la practica anterior, no hay que asignar
memoria ni copiar cadenas). Ejemplos
#xterm -e csh &
#DISPLAY HOME TERM HZ xterm -e csh &
#exec ./a.out
#exec LANG USER HOME DISPLAY ./a.out
Información detallada de las llamadas al sistema y las funciones de la librería
debe obternerse con man (exec, getenv, putenv...)
FORMA DE ENTREGA
Va a ser utilizado el servicio de recogida de prácticas suministrado por el Centro de Cálculo de esta Facultad y parte del proceso de corrección
de las prácticas va a ser automtico (compilación, listado de practicas entregadas etc) por lo cual deben entregarse exactamente como se indica a continuación:
FECHA DE ENTREGA VIERNES 5 MAYO 2006