SISTEMAS OPERATIVOS II

Tercer curso Ingeniería Informática. Curso 2010-2011

Práctica 2: Procesos en Unix: Entorno

Continuar la codificación de un intérprete de comandos (shell) en UNIX. Nótese que los comandos aquí descritos deben interpretarse de la siguiente manera

Además deben tenerse en cuenta las siguientes indicaciones

El shell debe llevar una lista de directorios (análoga al PATH del bash) donde busca los ejecutables, de manera que cuando se indica un orden al shell la ejecutará si

La implementación de dicha lista es libre pero NO DEBE implementarse como una variable de entorno. El comando del shell search muestra y/o manipula dicha lista. Los directorios, salvo el raiz ("/") se especificarán sin la barra al final (/usr/bin y no /usr/bin/)

En está práctica, además, el shell llevará una lista de todos los procesos en segundo plano que se lanzan desde él; el comando jobs muestra y/o manipula dicha lista.

Comandos a implementar en esta práctica

search
[-del|-find|-reset|-importpath] [arg]

environ
[-show|-set|-main|-environ] [arg1...] Muestra o modifica el entorno del shell

exec
[LISTAVARIABLES] prog arg1 ... Ejecuta, sin crear proceso (es decir REEMPLAZANDO el código del shell) el programa prog con sus argumentos. prog representa un ejecutable externo y para poder ser encontrado debe especificarse una trayectoria completa hasta él (comenzando por "/", "./" o "../") o residir en uno de los directorios del searchlist. Debe usarse la llamada execv. Si se especifica LISTAVARIABLES, la ejecución será mediante execve y el entorno se especifica en LISTAVARIABLES. LISTAVARIABLES puede contener nombres de variables de entorno (el valor se obtiene de environ) o cadenas de la forma NOMBRE=VALOR (se suministra ya la variable con su valor, y la variable no tiene que existir previamente). Si LISTAVARIABLES es "NULLENV" la ejecución será mediante execve y con un entorno vacío (ver ejemplos)

[LISTAVARIABLES]
prog arg1 ... & El shell crea un proceso que ejecuta en primer plano el programa prog con sus argumentos. prog representa un ejecutable externo y para poder ser encontrado debe especificarse una trayectoria completa hasta él (comenzando por "/", "./" o "../") o residir en uno de los directorios del searchlist. Debe usarse la llamada execv. Si se especifica LISTAVARIABLES, la ejecución será mediante execve y el entorno se especifica en LISTAVARIABLES. LISTAVARIABLES puede contener nombres de variables de entorno (el valor se obtiene de environ) o cadenas de la forma NOMBRE=VALOR (se suministra ya la variable con su valor, y la variable no tiene que existir previamente). Si LISTAVARIABLES es "NULLENV" la ejecución será mediante execve y con un entorno vacío. NO DEBE ESCRIBIRSE "prog" PARA EJECUTAR ALGO. "prog" REPRESENTA EL NOMBRE DEL EJECUTABLE El símbolo & indica que la ejecución es en segundo plano Ejemplos
*) search /bin
*) search /usr/bin
*) search .
*) /usr/bin/xclock &
*) TERM HOME DISPLAY USER xterm -e bash &
*) exec NULLENV ./a.out

jobs
[-del] [all|term|sig|stop|act] Muestra (o manipula) la lista de procesos en segundo plano del shell.

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

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 8 ABRIL DE 2011