wiki:SoftWare/SignalCheckpoint/API

SoftWare/SignalCheckpoint / API - Application Programming Interface

L'API du module SignalCheckpoint est simple, réduite au maximum. C'est voulu. L'objectif est d'avoir une bibliothèque facile à mettre en oeuvre dans le cadre du calcul intensif.

Constantes

Le module Fortran Signal_Checkpoint exporte un certain nombre de signaux. Plutôt que de mettre tous les signaux, seuls les signaux utiles ont été définis. Il est très facile d'en rajouter un s'il le faut.

integer,parameter :: SIGHUP  =  1  ! Signal HUP
integer,parameter :: SIGINT  =  2  ! Signal INT
integer,parameter :: SIGQUIT =  3  ! Signal QUIT
integer,parameter :: SIGUSR1 = 10  ! Signal USR1
integer,parameter :: SIGUSR2 = 12  ! Signal USR2
integer,parameter :: SIGTERM = 15  ! Signal TERM
integer,parameter :: SIGXCPU = 24  ! Signal XCPU

Appels de fonction et de procédure

Quelques procédures et fonctions permettent la gestion de ces signaux

  • signal_checkpoint_connect
    subroutine signal_checkpoint_connect (SIG_NUM, EXIT)
       integer,intent(in)          :: SIG_NUM
       logical,intent(in),optional :: EXIT
    
    Appel à placer en début de programme afin d'indiquer le ou les signaux à prendre en compte. Le paramètre EXIT permet de lever un drapeau supplémentaire si le signal est reçu. Ce drapeau est utile si on souhaite que son programme puisse réagir de manière différente à deux signaux.
  • signal_checkpoint_is_received
    function signal_checkpoint_is_received () result (IS_RECEIVED)
       logical :: IS_RECEIVED
    
    Fonction qui retourne positivement si un signal a été reçu. Il est donc temps de penser à finir proprement...
  • signal_checkpoint_ask_for_exit_code
    function signal_checkpoint_ask_for_exit_code () result (EXIT)
       logical :: EXIT
    
    Drapeau permettant de savoir si le signal marqué EXIT a été reçu. Cela permet de quitter le programme avec un code d'erreur par exemple et non avec la valeur classique 0. En effet, ce code de retour peut être utilisé par le scheduleur ou le script de lancement batch pour savoir si le code doit être re-soumis ou non.
  • signal_checkpoint_received_times
    function signal_checkpoint_received_times () result (RECEIVED_TIMES)
       integer :: RECEIVED_TIMES
    
    Fonction qui retourne le nombre de signaux reçu. Cette fonction ne sers à rien dans un code de calcul car ce nombre n'a pas de signification autre que == 0 ou > 0, signification déjà donné par l'appel signal_checkpoint_is_received. Elle est juste utile en phrase de test afin de valider que l'on reçois bien les signaux !
Last modified 12 years ago Last modified on Oct 11, 2012, 2:14:48 PM