SISTEMAS OPERATIVOS II

Tercer curso Ingeniería Informática. Curso 2007-2008

Práctica 3: Procesos en UNIX: Entorno, credenciales

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

entorno -m|-e
Muestra la lista de todas las variables de entorno accediendo mediante el tercer argumento de main() (-m) o mediante la variable externa environ (-e). 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]).

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

#entorno -m
......
.......
.......
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 
#

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 el comando exec y la ejecución en primer y segundo plano (com y com &) para que la ejecución sea en un entorno alternativo. El formato es

[exec] pri [lista_variables] ej [args] [&]

donde

ejemplos

# xterm -e ksh &

# exec @10 TERM DISPLAY HOME HZ=120 N=65 ./a.out arg1 arg2 

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

# ENTORNOVACIO ./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

creds
Muestra las credenciales del proceso (reales y efectivas, de usuario y de grupo). Para cada credencial muestra el valor numérico y el login (o nombre del grupo) asociado.
setuid [-l] [uid]
Establece la credencial efectiva de usuario a id. Si se especifica -l se entiende que uid es un login en caso contrario es el valor numérico de una credencial.

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

FORMA DE ENTREGA Como en prácticas anteriores

FECHA DE ENTREGA VIERNES 23 MAYO 2008