SISTEMAS OPERATIVOS II

Tercer curso Ingeniería Técnica Informática de sistemas. Curso 2007-2008

Práctica 3: Procesos en UNIX: Entorno

Continuar la codificación de un intérprete de comandos (shell) en UNIX. Al igual que en la práctica anterior

entornomain
Muestra la lista de todas las variables de entorno accediendo mediante el tercer argumento de main(). 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 de la variable e[i] como puntero) y la dirección de memoria donde se almacena el puntero (&e[i]).
entornoenviron
Igual que el anterior, pero el acceso es mediante la variable Âșem environ

entornos
Muestra 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

#entornomain
......
.......
.......
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
#entornos
20a34->environ=ffbefc44 | ffbefc24->env=ffbefc44  | ffbefc20->argv=ffbefc3c
#

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 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).

put -e|-a|-p var valor
Establece el valor de la variable de entorno var a valor accediendo a ella mediante environ (-e), el tercer argumento de main (-a) o la función de librería putenv. Si la variable no existe no la creará (informará de ello), salvo que se haya especificado que se haga mediante puntenv, entonces será creada.

sus -e|-a var nue=val
Sustituye de la variable de entorno var por nue=val accediendo a ella mediante environ (-e) o el tercer argumento de main (-a). Si la variable var no existe informará de ello.

 $$
modificar los comandos xec, xecpri, pri y la ejecución en primer y segundo plano (com y com & para que pueda un entorno alternativo. El formato es

[xec|xecpri|pri ] [lista_variables] ej [args] [&]

donde

ejemplos

# xterm -e ksh &

# xec TERM DISPLAY HOME HZ=120 N=65 ./a.out arg1 arg2 

# TERM DISPLAY HOME USER NUEVA=PRUEBA /usr/bin/xterm -hold -e ./a.out

# NULL ./a.out

Las variables no tienen por que ir en mayúsculas, la primera cadena que no sea una variable (y se sabe que es una variable si existe en environ o es una cadena en la forma cad1=cad2) es el ejecutable

Información detallada de las llamadas al sistema y las funciones de la librería debe obternerse con man (execve, wait4, getenv, putenv..)

FORMA DE ENTREGA Como en prácticas anteriores

FECHA DE ENTREGA VIERNES 18 ENERO 2008