SISTEMAS OPERATIVOS II

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

Práctica 2: Procesos en UNIX. Ejecución en esgundo plano, credenciales, prioridad, redirección.

Continuar la codificación de un intérprete de comandos (shell) en UNIX, que se irá completando en suscesivas prácticas.

Nuestro shell debe mantener una nueva lista:

getpriority [pid]
Muestra la prioridad del proceso pid. Si no se especifica pid, muestra la prioridad del intérprete de comandos.

setpriority [pid] valor
Estable la prioridad del proceso pid. Si no se especifica pid, establece la prioridad del intérprete de comandos.

uid [-n] [valor]
En caso de no indicar ni -n ni valor muestra las credenciales de usuario del proceso; muestra la real y la efectiva, tanto su valor numérico como el login asociado. Si se especifica valor intenta establecer la credencial efectiva del proceso a valor; -n indica que se suministra el valor numérico de la credencial, en otro caso valor representa el login.

back
[LISTAVAR] cmd [args] Ejecuta, creando un proceso en segundo plano, el programa especificado por cmd con los argumentos especificados por args. Si no se especifica LISTAVAR la ejecución será mediante execv. LISTAVAR representa una lista de nombres de variables de entorno, y en caso de especificarse la ejecución será mediante execve (los valores se obtendrán mediante environ. Si LISTAVAR es "NULLENV" (sin las comillas) la ejecicuón será mediante execve pero en un entorno vacio. Si cmd es un nombre que comienza por /, ./ o ../ debe entenderse como el nombre absoluto del ejecutable, en otro caso se buscará dicho ejecutable en la lista de directorios con la que el shell implementa el concepto de path. Debe añadir el proceso creado a la lista de procesos en segundo plano. Si no se especifica ni lista de variables, ni ejecutable ni argumentos es decir, back unicamente, mostrará la lista de procesos en segundo plano, igual que jobs

ejemplo

# back /usr/bin/xterm -e csh
# back TERM HOME DISPLAY HZ /usr/bin/xterm -e bash -T prueba

jobs [-d]
[[-term] [-sign] [-stop] [-actv] |[pid1 [pid2]...] Con la opción -d, elimina procesos de la lista de procesos en segundo plano; sin -d muestra los procesos en segundo plano con pids pid1, pid2 .... Alternativamente, en lugar de especificar los pids puede usarse
-term
todos los que ha terminado normalmente
-sign
todos los que han terminado debido a una señal
-stop
todos los que están parados
-actv
todos los activos
Si no se especifica sobre que conjunto de procesos quiere actuarse (bien mediante lista de pids o bien mediante las opciones -a, -s ...) se entenderá que es todos

La lista indicará, para cada proceso, EN UNA SOLA LINEA

Si no se especifica sobre que conjunto de procesos quiere actuarse (bien mediante lista de pids o bien mediante las opciones -term, -stop ...) se listarán todos los procesos en segundo plano, es decir, tanto jobs como jobs -d LISTAN TODOS los procesos en esgundo plano.

 $$
pri valor [back|exec][LISTAVAR] cmd [args] Ejecuta, (sin crear proceso creando proceso en primer o segundo plano, dependiendo de si se indica back o exec) en programa especificado por cmd [args] con su prioridad cambiada a valor.

 $$
redirección Se podrá redireccionar la entrada, salida y/o error estandar de un proceso, tanto de los ejecutados en primer plano como de los ejecutados en segundo plano o de los ejecutados mediante exec. Las redirecciones han de ser compatibles entre si y la sintaxis es

 $$
[pri val] [back|exec][LISTAVAR] cmd [args] [*If1] [*Of2] [*Ef3]

donde

ejemplos

#gcc jdsdksh sjkdh skdj skdhskjdh skjdh *Esalida_error
#exec ls -l /usr/local %Olista_licheros

pipe
cmd1 [args1] % cmd2 [args2] Crea dos procesos, uno que ejecuta cmd1 con los argumentos args1 y otro que ejecuta cmd2 con los argumentos args2 de manera que la salida estándar del proceso que ejecuta cmd1 se redirecciona a la entrada estándar del proceso que ejecuta args2

Información detallada de las llamadas al sistema y las funciones de la librería debe obternerse con man (exec, fork, strtok, waitpid, getpriority, setpriority, dup, setuid, getuid getpwent)

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 JUEVES 30 ABRIL 2009