SISTEMAS OPERATIVOS II

Tercer curso Ingeniería Técnica de Sistemas. Curso 2003-2004

Práctica 1: Procesos en UNIX. Entorno

Comenzar la codificación de un shell en UNIX, que se irá completando en suscesivas prácticas. El shell incluirá de momento los siguientes comandos:

autores
Indica los nombres y los logins de los autores de la práctica.
newpath
Inicializa el path del shell a vacio. El path del shell es el conjunto de directorios donde el shell busca los ejecutables para los comandos exec y exece. NO COINCIDE NECESARIAMENTE con la variable de entorno path.
path dir
Añade dir al path del shell. El nombre del directorio no debe incluir el caracter / al final (Ejemplo /usr/bin y NO /usr/bin/).
path -dir
Elimina dir del path del shell.
importapath [n]
Añade los n primeros directorios de la variable de entorno path al path del shell. Si no se suministra n los añade todos.
entorno1
Muestra la lista de todas las variables de entorno accediendo mediante el tercer argumento de main. Para cada variable de entorno muestra 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]). Después de las variables se muestra el valor (como puntero) del tercer argumento de main y de la variable environ.
entorno2
Igual que entorno1 pero accediendo mediante la variable environ en lugar de emplear el tercer argumento de main.
set1 var=valor
Establece el valor de la variable de entorno var. Accede mediante el tercer argumento de main. Si la variable de entorno no existe no la crea.
set2 var=valor
Igual que set1 pero accediendo mediante la variable environ en lugar de emplear el tercer argumento de main.
putenv 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 var
Devuelve los valores de la variable var 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.
cambiaprompt
Cambia el prompt del shell. El prompt lo obtiene de la variable de entorno PROMPT. Si la variable de entorno PROMPT no existe cambiaprompt no hace nada.
donde ejecutable
Busca ejecutable en la lista de directorios que constituyen el path y devuelve la trayectoria completa hasta él.
fork
El shell crea un hijo y se queda en espera.
exec com
El shell ejecuta, sin crear un nuevo proceso (reemplaza su código) el programa especificado en com. com representa un ejecutable con sus parámetros. Para poder ser ejecutado, dicho ejecutable debe residir en uno de los directorios del path del shell o bien especificarse la trayectoria completa hasta él (comenzando por /, . o ..). Debe usarse la llamada al sistema execv.
exece LV com
El shell ejecuta el programa especificado en com, en el entorno especificado por LV. com representa un ejecutable con sus parámetros. Para poder ser ejecutado, dicho ejecutable debe residir en uno de los directorios del path del shell o bien especificarse la trayectoria completa hasta él (comenzando por /, . o ..). LV representa una lista de nombres de variables de entorno; los valores de dichas variables de entorno deben obtenerse mediante environ o getvar. Debe usarse la llamada al sistema execve. Ejemplo

exece TERM HZ HOME DISPLAY xterm -e a.out

ejcuta xterm -e a.out en un entorno que sólo contiene las variables de entorno TERM, HZ, HOME y DISPLAY

chdir [dir]
Cambia el directorio actual a dir. Si no se le suministra argumento informa del directorio actual.
exit
Sale del shell.

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

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 21 NOVIEMBRE 2003