Procesos Final
Procesos Final
Procesos Final
ARGUEDAS
PROCESOS EN UN SISTEMA
OPERATIVO
INTEGRANTES:
Franklin Daniel Carbajal Osis
Lino Eduardo Llalli Borda
Noe Lujan Gutiérrez
Irineo rojas Carrasco
2019
PRESENTACIÓN
tema. Nuestro trabajo consta de doce temas en el cual se explican de forma clara con
ejemplos e imágenes para el mejor entendimiento del lector y los últimos temas se detallan
las apicaciones de los conceptos de proceso en ejmplos con algoritmos en el lenguaje c para
ponerlo en práctica, investigar y analizar dichos algoritmos. Los temas que abarcamos en
verificación, analisis y seguimiento del lector para profundizar más en los temas.
I
INDICE
Contenido
1. CONCEPTO DE PROCESO............................................................................................................ 1
2. MULTITAREA ........................................................................................................................ 3
2.1. BASE DE LA MULTITAREA .................................................................................................. 4
2.2. VENTAJAS DE LA MULTITAREA .......................................................................................... 6
2.3. INFORMACIÓN DEL PROCESO ........................................................................................... 7
3. ESTADO DEL PROCESADOR ............................................................................................. 7
3.1. IMAGEN DE MEMORIA DEL PROCESO .............................................................................. 8
3.2. TABLAS DEL SISTEMA OPERATIVO .................................................................................. 10
4. FORMACIÓN DE UN PROCESO....................................................................................... 10
5. ESTADOS DEL PROCESO ................................................................................................ 11
6. PROCESOS LIGEROS ........................................................................................................ 19
7. Planificación ......................................................................................................................... 25
7.1 . Algoritmos de planificación .................................................................................. 27
7.2. Planificación en POSIX .................................................................................................. 30
7.3. Planificación en Windows NT/2000............................................................................. 31
8. SEÑALES Y EXCEPCIONES ............................................................................................. 32
8.1 . Señales ........................................................................................................................ 32
8.2. Excepciones...................................................................................................................... 33
9. TEMPORIZADORES ............................................................................................................ 34
10. SERVIDORES Y DEMONIOS ......................................................................................... 34
11. SERVICIOS POSIX ........................................................................................................... 36
12. SERVICIOS DE W1N32 ................................................................................................... 43
Referencias bibliográficas: ....................................................................................................... 50
0
1. CONCEPTO DE PROCESO
Todos los programas, cuya ejecución solicitan los usuarios, se ejecutan en forma de
procesos, de ahí la importancia para el informático de conocerlos en detalle. El proceso se
puede definir como un programa en ejecución y, de una forma un poco más precisa, como
la unidad de procesamiento gestionada por el sistema operativo.
Asimismo, para que un programa pueda ser ejecutado ha de residir con sus datos en memoria
principal. Observe que durante su ejecución el proceso va modificando los registros del
modelo de programación de la computadora, de acuerdo a las instrucciones de máquina
involucradas.
El sistema operativo mantiene por cada proceso una serie de estructuras de información que
permiten identificar las características de éste, así como los recursos que tiene asignados.
En esta última categoría entran los descriptores de los segmentos de memoria asignados, los
descriptores de los archivos abiertos, los descriptores de los puertos de comunicaciones, etc.
• Contenido de los segmentos de memoria en los que residen el código y los datos del
proceso. A esta información se le denomina imagen de memoria o core image.
Es de destacar que el proceso no incluye información de E/S, puesto que ésta suele estar
reservada al sistema operativo.
1
JERARQUIA DE PROCESOS
Para referirse a las relaciones entre los procesos de la jerarquía se emplean los términos de
padre, hijo. hermano o abuelo. Cuando el proceso A solicita al sistema operativo que cree el
proceso B. se dice que A es padre de B y que B es hijo de A. Bajo esta óptica, la jerarquía
de procesos puede considerarse como un árbol genealógico.
Algunos sistemas operativos, como UNIX, mantienen de forma explícita esta estructura
jerárquica de procesos —un proceso sabe quién es su padre—, mientras que otros sistemas
operativos como el Windows NT no la mantienen.
2
2. MULTITAREA
Como ya se vio en el capítulo anterior, dependiendo del número de procesos y de usuarios
que puedan ejecutar simultáneamente, un sistema operativo puede ser:
• Monotarea o monoproceso.
• Multitarea o multiproceso.
• Monousuario.
Por el contrario, un sistema operativo multitarea o multiproceso permite que coexistan varios
procesos activos a la vez. El sistema operativo se encarga de ir repartiendo el tiempo del
procesador entre estos procesos, para que todos ellos vayan avanzando en su ejecución.
Un sistema monousuario está previsto para dar soporte a un solo usuario. Estos sistemas
pueden ser monoproceso o multiproceso. En este último caso el usuario puede solicitar
varias tareas al mismo tiempo, por ejemplo, puede estar editando un archivo y,
simultáneamente, puede estar accediendo a una página Web de la red.
3
Figura 3.2. Tipos de sistemas operativos en función del número de procesos y usuarios
Como se vio en el Capítulo 1, existe concurrencia real entre el procesador y las funciones
de F/S realizadas por los controladores de los periféricos. Esto significa que, mientras se
están realizando una operación de FIS de un proceso, se puede estar ejecutando otro proceso.
4
en un periférico. En un sistema monotarea el procesador no tiene nada que hacer durante las
fases de entrada/salida, por lo que desperdicia su potencia de procesamiento. En un sistema
multitarea se aprovechan las fases de entrada/salida de unos procesos para realizar las fases
de procesamiento de otros.
La Figura 3.4 presenta un ejemplo de ejecución multitarea con tres procesos activos.
Observe que, al finalizar la primera fase de procesamiento del proceso A, hay un intervalo
de tiempo en el que no hay trabajo para el procesador.
Como muestra la figura, el sistema operativo entra a ejecutar al final de las fases de
procesamiento y al final de las fases de entrada/salida. Esto es así puesto que las operaciones
de F/S no las gobiernan directamente los procesos, sino que se limitan a pedirle al sistema
operativo que las realice. Del mismo modo, el sistema operativo trata las interrupciones que
generan los controladores para avisar que han completado una operación.
Finalmente es importante destacar que la multitarea exige tener más de un proceso activo y
cargado en memoria principal. Por tanto, hay que disponer de suficiente memoria principal
para albergar a estos procesos.
PROCESO NULO
Como se indicó en el Capítulo 1, el procesador no para de ejecutar nunca. Esto parece que
contradice a la Figura 3.4, puesto que muestra un intervalo en el que el procesador no tiene
nada que hacer. Para evitar esta contradicción, los sistemas operativos incluyen el
denominado proceso nulo.
Este proceso consiste en un bucle infinito que no realiza ninguna operación útil. El objetivo
de este proceso es «entretener» al procesador cuando no hay ninguna otra tarea.
5
ESTADOS DE LOS PROCESOS
De acuerdo con la Figura 3.4, un proceso puede estar en varias situaciones (procesamiento,
listo para ejecutar y espera), que denominaremos estados. A lo largo de su vida, el proceso
va cambiando de estado según evolucionan sus necesidades. En la Sección 3.5 se describirán
con mayor detalle los estados de un proceso.
PLANIFICADOR Y ACTIVADOR
El planificador (scheduler) forma parte del núcleo del sistema operativo. Entra en ejecución
cada vez que se activa el sistema operativo y su misión es seleccionar el proceso que se ha
de ejecutar a continuación.
El activador (dispatcher) también forma parte del sistema operativo y su función es poner
en ejecución el proceso seleccionado por el planificador.
La multiprogramación presenta varias ventajas, entre las que se pueden resaltar las
siguientes:
• Permite prestar un buen servicio, puesto que se puede atender a varios usuarios de forma
eficiente, interactiva y simultánea.
• Aprovecha los tiempos muertos que los procesos pasan esperando a que se completen sus
operaciones de E/S.
6
• Aumenta el uso de la UCP, al aprovechar los espacios de tiempo que los procesos están
bloqueados.
Todas estas ventajas hacen que, salvo para situaciones muy especiales, no se conciba
actualmente un sistema operativo que no soporte multitarea.
El estado del procesador está formado por el contenido de todos sus registros, que se
enumeran seguidamente:
• Contador de programa.
• Puntero de pila.
El estado del procesador de un proceso reside en los registros del procesador, cuando el
proceso está en ejecución, o en el bloque de control de proceso (BCP), cuando el proceso
no está en ejecución.
7
Cuando el proceso está ejecutando, el estado del procesador varía de acuerdo al flujo de
instrucciones maquina ejecutado. En este caso, la copia del estado del procesador que
reside en el BCP no está actualizada. Téngase en cuenta que los registros de la máquina se
utilizan para no tener que acceder a la información de memoria, dado que es mucho más
lenta. Por tanto, no tiene sentido plantear que, en cada modificación de un registro, se
actualice su valor en el BCP, puesto que está en memoria.
La imagen de memoria del proceso está formada por los espacios de memoria que está
autorizado a utilizar. Las principales características de la imagen de memoria son las
siguientes:
• Los procesos suelen necesitar asignación dinámica de memoria. Por tanto, la imagen de
memoria de los mismos se deberá adaptar a estas necesidades, creciendo o decreciendo
adecuadamente.
8
• No hay que confundir la asignación de memoria con la asignación de marcos de memoria.
El primer término contempla la modificación de la imagen de memoria y se refiere a
espacio virtual en los sistemas con este tipo de espacio. El segundo sólo es de aplicación
en los ¡sistemas con memoria virtual y se refiere a la modificación del conjunto residente
del proceso.
El sistema operativo asigna la memoria al proceso, para lo cual puede emplear distintos
modelos de imagen de memoria, que se analizan seguidamente.
Este es el modelo más sencillo de imagen de memoria y su uso se suele restringir a los
sistemas sin memoria virtual. El proceso recibe un único espacio de memoria que, además,
no puede variar de tamaño.
Se puede decir que esta solución no se emplea. En sistemas sin memoria virtual los
segmentos no pueden crecer a menos que se deje espacio de memoria principal de reserva;
se chocaría con otro proceso. Ahora bien, la memoria principal es muy cara como para
dejarla de reserva. En sistemas Con memoria virtual sí se podría emplear, pero es más
conveniente usar un modelo de varios segmentos, pues es mucho más flexible y se adapta
mejor a las necesidades reales de los procesos.
• Texto o código. Bajo este nombre se considera el programa máquina que ha de ejecutar el
proceso. Aunque el programa podría automodificarse. no es esta una práctica recomendada,
por lo cual se considerará que esta información es fija y que solamente se harán operaciones
de lectura sobre ella (Aclaración 3.2).
• Datos. Este bloque de información depende mucho de cada proceso. Los lenguajes de
programación actuales permiten asignación dinámica de memoria, lo que hace que varíe el
tamaño del bloque de datos al avanzar la ejecución del proceso. Cada programa estructura
sus datos de acuerdo a sus necesidades, pudiendo existir los siguientes tipos:
-Datos con valor inicial. Estos datos son estáticos y su valor se fija al cargar el proceso desde
el archivo ejecutable. Estos valores se asignan en tiempo de compilación.
9
-Datos sin valor inicial. Estos datos son estáticos, pero no tienen valor asignado. por lo que
no están presentes en el archivo ejecutable. Será el sistema operativo el que, al cargar el
proceso, rellene o no rellene esta zona de datos con valores predefinidos.
-Datos dinámicos. Estos datos se crean y se destruyen de acuerdo a las directrices del
programa.
Pila. A través del puntero de pila, los programas utilizan una estructura de pila residente en
memoria. En ella se almacenan, por ejemplo, los bloques de activación de los
procedimientos llamados. La pila es una estructura dinámica, puesto que crece y decrece
según avanza la ejecución del proceso.
4. FORMACIÓN DE UN PROCESO
10
• Seleccionar un BCP libre de la tabla de procesos.
• Rellenar el BCP con la información de identificación del proceso, con la
descripción de la memoria asignada, con los valores iniciales de los
registros indicados en el archivo objeto, etc.
• Cargar en el segmento de texto el código más las rutinas de sistema y en
el segmento de datos los datos iniciales contenidos en el archivo objeto.
• Crear en el segmento de pila la pila inicial del proceso. La pila incluye
inicialmente el entorno del proceso y los parámetros que se pasan en la
invocación del programa correspondiente.
Una vez completada toda la información del proceso, se puede marcar como listo
para ejecutar, dc forma que el planificador, cuando lo considere oportuno, lo
seleccione para su ejecución.
11
Ejecución. En este estado está el proceso que está siendo ejecutado por el
procesador, es decir, que está en fase de procesamiento. En esta fase el estado
del proceso reside en los registros del procesador.
Listo. Un proceso está listo para ejecutar cuando puede entrar en fase de
procesamiento. Dado que puede haber varios procesos en este estado, una de las
tareas del sistema operativo será seleccionar aquel que debe pasar a ejecución.
El módulo del sistema operativo que toma esta decisión se denomina
planificador. En esta fase, el estado del proceso reside en el BCP.
Estados suspendidos
Además de los tres estados básicos de ejecución, listo y bloqueado, los procesos
pueden estar en los estados de espera y de suspendido. El diagrama de estados
completo de un proceso se representa en la Figura 3.15.
Los procesos entran en el sistema porque lo solicita un proceso de usuario o
porque está prevista su ejecución hatch. Es frecuente tener una lista de procesos
batch en espera para ser ejecutados cuando se pueda. El sistema operativo ha
de ir analizando dicha lista para lanzar la ejecución de los procesos a medida que
disponga de los recursos necesarios.
Los procesos salen del sistema cuando mueren, es decir, al ejecutar el servicio
correspondiente o al producir algún error irrecuperable.
Supóngase ahora que está ejecutando el proceso A y que llega una interrupción
de teclado asociado al proceso B. Se produce el cambio de contexto, pero el
proceso B puede seguir en estado de bloqueado (no llegó el carácter de fin de
línea) y el proceso A puede seguir en estado de ejecución, por lo que no hay
cambio de estado en los procesos.
Las transiciones en el estado del proceso exigen un trabajo cuidadoso por parte
del sistema operativo, para que se hagan correctamente. El aspecto más delicado
se refiere al contenido de los registros de la computadora. Veamos detalladamente
los pasos involucrados:
.
Figura 3.16. Al interrumpirse la ejecución de un proceso se salva su
estado en el BCP.
• Contador de programa.
• Pila.
• Registros.
• Estado del proceso ligero (ejecutando, listo o bloqueado).
El proceso ligero puede estar en uno de los tres estados siguientes: ejecutando,
listo para ejecutar y bloqueado. Como muestra la Figura 3.19, cada proceso ligero
de un proceso tiene su propio estado, pudiendo estar unos bloqueados, otros listos
y otros en ejecución (Aclaración 3.4).
El estado del proceso será ¡a combinación de los estados de sus procesos ligeros.
Por ejemplo, si tiene un proceso ligero en ejecución, el proceso está en ejecución.
Si no tiene proceso ligero en ejecución, pero tiene alguno listo para ejecutar, el
proceso está en estado de listo. Finalmente, si todos sus procesos ligeros están
bloqueados, el proceso está bloqueado. No tiene sentido el estado dc suspendido,
puesto que, si el proceso está suspendido, todos sus procesos ligeros lo estarán.
Paralelismo
Los procesos ligeros permiten paralelizar una aplicación, tal y como muestra la
Figura
En efecto, cuando un programa puede dividirse en procedimientos que pueden
ejecutar de forma independiente, el mecanismo de los procesos ligeros permite
lanzar simultáneamente la ejecución de todos ellos. De esta forma se consigue
que el proceso avance más rápidamente (Prestaciones 3.2).
La base de este paralelismo estriba en que, mientras un proceso ligero está
bloqueado, otro puede ejecutar.
Comparando el uso de los procesos ligeros con otras soluciones se puede decir
que:
— No hay paralelismo.
— Utiliza llamadas al sistema bloqueantes.
— Permite paralelismo.
— Utiliza llamadas al sistema no bloqueantes, lo que lleva a un diseño
muy complejo y difícil de mantener.
Figura 3.20. Los procesos ligeros permiten paralelizar la ejecución
de una aplicación.
7. Planificación
El objetivo de la planificación de procesos es el reparto del tiempo de procesador
entre los proseos que pueden ejecutar. El planificador es el módulo del sistema
operativo que realiza la función de selección el proceso de listo que pasa a estado
de ejecución, mientras que el activador es el módulo que pone en ejecución el
proceso planificado.
La planificación a largo plazo tiene por objetivo añadir nuevos procesos al sistema,
tomándolos de la lista de espera. Estos procesos son procesos de tipo batch, en
los que no importa el instante preciso en el que se ejecuten (siempre que se
cumplan ciertos límites de espera).
Expulsión
La planificación puede ser con expulsión o sin ella. En un sistema sin expulsión un
proceso conserva el procesador mientras lo desee, es decir, mientras no solicite
del sistema operativo un servicio que lo bloquee. Esta solución minimiza el tiempo
que gasta el sistema operativo en planificar y activar procesos, pero tiene como
inconveniente que un proceso puede monopolizar el procesador (imagínese lo que
ocurre si el proceso, por error, entra en un bucle infinito).
En los sistemas con expulsión, el sistema operativo puede quitar a un proceso del
estado de ejecución, aunque éste no lo solicite. Esta solución permite controlar el
tiempo que está en ejecución un proceso, pero requiere que el sistema operativo
entre de forma sistemática a ejecutar para así poder comprobar si el proceso ha
superado su límite de tiempo de ejecución.
Objetivos de la planificación
La mayoría de estos objetivos son incompatibles entre sí, por lo que hay que
centrar la atención en aquel que sea de mayor interés. Por ejemplo, una
planificación que realice un reparto equitativo del procesador no conseguirá
optimizar el uso del mismo.
Hay que observar que algunos objetivos están dirigidos a procesos interactivos,
mientras que otros lo están a procesos batch.
Cíclica o Round-robin
El algoritmo cíclico está diseñado para hacer un reparto equitativo del tiempo del
procesador, por lo que está especialmente destinado a los sistemas de tiempo
compartido. El algoritmo se basa en el concepto de rodaja (slot) de tiempo.
Los procesos están organizados en forma de cola circular, eligiéndose para su
ejecución el proceso cabecero de la cola. Un proceso permanecerá en ejecución
hasta que ocurra una de las dos condiciones siguientes:
Fifo
Prioridades
Aleatorio o lotería
Los sistemas de tiempo real se caracterizan porque los procesos tienen que
ejecutar en instantes predeterminados. Se pueden diferenciar dos tipos de
procesos de tiempo real: a plazo fijo y periódico. La diferencia estriba en que los de
plazo fijo tienen que ejecutar una vez, en un instante determinado, mientras que
los periódicos deben ejecutar de forma repetitiva cada cierto tiempo.
Listo. Los procesos ligeros en este estado están listos para ejecutar.
Reserva. Un proceso ligero en este estado será el siguiente proceso ligero
a ejecutar en un procesador determinado. Sólo puede haber un proceso
ligero en este estado por procesador.
Ejecución. El proceso ligero permanece ejecutando hasta que se cumpla
alguna de estas condiciones: el sistema operativo lo expulsa para ejecutar
un proceso ligero de mayor prioridad, la rodaja de tiempo del proceso
termina o bien el proceso ligero finaliza su ejecución.
Bloqueado. Cuando el proceso ligero deja de estar bloqueado puede,
dependiendo de su prioridad, comenzar su ejecución inmediatamente o
pasar al estado de listo para ejecutar.
Transición. Un proceso ligero entra en este estado cuando está listo para
ejecutar, pero la pila que utiliza el sistema operativo para ese proceso no
reside en memoria principal. Cuando la página vuelva a memoria, el proceso
ligero pasará al estado de listo para ejecutar.
Finalizado. Cuando un proceso ligero finaliza su ejecución, pasa a este
estado. Una vez terminado, el proceso ligero puede o no ser eliminado del
sistema. En caso de no ser eliminado, podría ser reutilizado de nuevo.
Figura 7.27. Estados de los procesos ligeros en Windows NT
8. SEÑALES Y EXCEPCIONES
Cuando un sistema operativo desea notificar a un proceso la ocurrencia de un
determinado evento, o error, recurre a dos tipos de mecanismos: señales y
excepciones. Las primeras se utilizan en POS IX y las segundas en Windows NT.
En las siguientes secciones se tratan estos dos mecanismos.
8.1 . Señales
Las señales tienen frente al proceso el mismo comportamiento que las
interrupciones tienen frente al procesador, por lo que se puede decir que una señal
es una interrupción al proceso.
El proceso que recibe una señal se comporta, como muestra la Figura 3.28, de la
siguiente forma:
Figura 7.28. recepción de una señal por parte de un proceso.
Tipos de señales
Dado que las señales se utilizan para indicarle al proceso muchas cosas diferentes,
existen una gran variedad de ellas. A título de ejemplo, se incluyen aquí tres
categorías de señales:
Excepciones hardware.
Comunicación.
FIS asíncronas.
8.2. Excepciones
Una excepción es un evento que ocurre durante la ejecución de un programa y que
requiere la ejecución de un fragmento de código situado fuera del flujo normal de
ejecución.
9. TEMPORIZADORES
El sistema operativo mantiene en cada BCP un temporizador que suele estar
expresado en segundos. Cada vez que la rutina del sistema operativo que trata
las interrupciones de reloj comprueba que ha transcurrido un segundo,
decrementa todos los temporizadores que no estén a «0» y comprueba si han
llegado a «0». Para aquellos procesos cuyo temporizador acaba de llegar a «0»,
el sistema operativo notifica al proceso que el temporizador ha vencido. En
POSIX se genera una señal SIGALRN. En Win32 se ejecuta una función
definida por el usuario y que se asocia al temporizador.
De esta forma, el proceso servidor dedica muy poco tiempo a cada cliente, puesto
que el trabajo lo realiza un nuevo proceso, y puede atender rápidamente nuevas
peticiones. La Figura 3.30 muestra esta secuencia.
En esta sección se describen los principales servicios que ofrece POSIX para la
gestión de procesos. Estos servicios se han agrupado según las siguientes
categorías:
Identificación de procesos.
El entorno de un proceso.
Creación de procesos.
Terminación de procesos.
Identificación de procesos
pid ti getppid(void)
pid_id_proceso; pid_id_padre;
uid_t getuid(void);
El entorno de un proceso
El entorno de un proceso viene definido por una lista de variables que se pasan al
mismo en el momento de comenzar su ejecución. Estas variables se denominan
variables de entorno y son accesibles a un proceso a través de la variable externa
environ, declarada de la siguiente forma:
int i;
main ()
else
Creación de procesos
Crear un proceso
La forma de crear un proceso en un sistema operativo que ofrezca la interfaz POSIX
es invocando el servicio fork. El sistema operativo trata este servicio realizando una
donación del proceso que lo solicite. El proceso que solicita el servicio se convierte
en el proceso padre del nuevo proceso, que es, a su vez, el proceso hijo. El
prototipo de esta función es el siguiente:
La Figura 3.32 muestra que la donación del proceso padre se realiza copiando la
imagen de memoria y el BCP. Observe que el proceso hijo es una copia del
proceso padre en el instante en que éste solicita el servicio fork. Esto significa que
los datos y la pila del proceso hijo son los que tiene el padre en ese instante de
ejecución. Es más, dado que, al entrar el sistema operativo a tratar el servicio, lo
primero que hace es salvar los registros en el BCP del padre, al copiarse el BCP
se copian los valores salvados de los registros, por lo que el hijo tiene los mismos
valores que el padre
main ()
pid_t pid;
default: /* padre */
Terminación de procesos
voidexit(int status);
void íin(void)
void main(void)
if (atexit(fin) O) perror(”atexit”)
exit (1)
La utilización de los servicios fork, exec, wait y exit hace variar la jerarquía de
procesos. Con el servicio fork aparecen nuevos procesos y con el exit desaparecen.
En Win32 cada proceso contiene uno o más procesos ligeros. Como se indicó
anteriormente, en Windows el proceso ligero o thread es la unidad básica de
ejecución. Los procesos en Win32 se diferencian de los de POSIX, en que Win32
no mantiene ninguna relación padre-hijo. Por conveniencia, sin embargo, en el
texto se asumirá que un proceso padre crea a un proceso hijo. Los servicios que
ofrece Win32 se han agrupado, al igual que en POSIX, en las siguientes categorías:
Identificación de procesos.
El entorno de un proceso.
Creación de procesos.
Terminación de procesos.
Identificación de procesos
Existen dos funciones que permiten obtener la identificación del proceso que realiza
la llamada.
El entorno de un proceso
Creación de procesos
LPCTSTR lpszlmageName,
LPTSTR lpszComrnandLine,
LPSECURITY_ATTRIBUTES lpsaProcess,
LPSECURITY_ATTRIBLJTES lpsaThread,
BOQL flnheritHandles,
DWORD fdwCreate,
LPVOID lpvEnvironrnent,
LPCTSTR lpszcurdir,
LPSTARTUPINFO lpsistartlnfo,
LPPROCESS_INFQRMATION
Esta función crea un nuevo proceso y su proceso ligero principal. El nuevo proceso
ejecuta el archivo ejecutable especificado en lpszlmageName. Esta cadena puede
especificar el nombre de un archivo con camino absoluto o relativo, pero la función
no utilizará el camino de búsqueda. Si lpszlmageName es NULL, se utilizará como
nombre de archivo ejecutable la primera cadena delimitada por blancos del
argumento lpszCommandLine.
Programa 3.20. Programa que crea un proceso que ejecuta la línea de mandatos
pasada como argumento.
i f (!Createprocess
Terminación de procesos
Este servicio aborta la ejecución del proceso con manejador hProcess. El código
de terminación para el proceso vendrá dado por el argumento uExitCode. La
función devuelve TRUE si se ejecuta con éxito.
IDWORD code;
&sj, &pi))
utiliza la línea de mandatos */
sin flags de creación */ utiliza el entorno del proceso */ utiliza el directorio de trabajo
del padre */
ExitProcess (O>
Referencias bibliográficas: