void let_me_alone()


Descripción:

Envía una señal s_kill a todos los procesos, excepto el que ejecutó esta función, lo que eliminará a todos los procesos menos el actual.

Esta función se utiliza, generalmente, desde el proceso principal, cuando ha finalizado una partida, para eliminar todos los procesos (disparos, enemigos, etc.) que quedarán activos, y recuperar el control del programa.

Una llamada a let_me_alone() se podría sustituir siempre por una serie de llamadas a la función signal() con la señal s_kill, pero para ello se deberían conocer los tipos de los procesos que se quieren eliminar, o bien, sus códigos identificadores.


PROCESS_INIT( proceso_nulo )(int _x, int _y, int _graph)
  BEGIN_INIT 
   x=_x; y=_y; graph=_graph; 
  END_INIT

BEGIN 
  LOOP 
   FRAME; 
END 

MAIN_PROGRAM_CDIV

BEGIN_PROGRAM

    set_mode(m320x200);

    load_fpg("help/help.fpg");
    new proceso_nulo(160, 100, 100);
    write (0, 160, 0, 1, "Pulse [ESPACIO] para eliminar el proceso");

    while (!key (_space)){
     FRAME;
    }

    let_me_alone(); // Se elimina el resto de los procesos

    LOOP
     FRAME;

END_PROGRAM

En el ejemplo, después de crear un proceso de tipo proceso_nulo, se espera a la pulsación de la barra espaciadora para utilizar la función let_me_alone() la cual elimina todos los procesos que hubiera (menos el principal, que es el que llamó a la función); en este caso se eliminará el proceso de tipo proceso_nulo.

La función cdiv_exit() sirve para terminar un programa de forma inmediata, retornando al sistema.


Ver: cdiv_exit() - signal()