let_me_alone()

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.

Programa ejemplo:
PROGRAM ejemplo_let_me_alone;
BEGIN
    load_fpg("help\help.fpg");
    proceso_nulo(160, 100, 100);
    write (0, 160, 0, 1, "Pulse [ESPACIO] para eliminar el proceso");
    WHILE (NOT key (_space))
        FRAME;
    END

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

    LOOP
        FRAME;
    END
END

PROCESS proceso_nulo(x, y, graph)
BEGIN
    LOOP
        FRAME;
    END
END


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.


Para poder comprobar los procesos que hay activos en un programa en un determinado momento se debe acceder al trazador (o debugger) pulsando la tecla [F12].


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


Ver: exit() - signal()