Gambas-it

Gambas3 => Programmazione => Topic aperto da: allegfede - 31 Maggio 2021, 15:49:43

Titolo: come verificare che applicazione gambas sia in esecuzione
Inserito da: allegfede - 31 Maggio 2021, 15:49:43
per diverse ragioni che non sto ad elencare, mi serve che un'applicazione gambas (audio_recorder.gambas) sia sempre in esecuzione, ma i metodi "standard" che cercano il PID dell'applicazione non funzionano, perche' in realta' l'applicativo gambas e' interpretato ed i pid restituiti sono quelli dell'inteprete "gbr3".

Il metodo che ho implementato in pratica conta le linee restituite dal comando "grep", che cerca su tutta la linea restituita da "ps".

Spero possa esservi utile:
Codice: [Seleziona]
#!/bin/bash

#beware 0 if not running, 1 if one is running, 2 or more if more are running

recorder_running=$(ps aux | grep gbr3 | grep recorder | wc -l);

# grep gbr3 estrae tutte le applicazioni interpretate da gambas3 runtime ...
# il grep successivo estrae quella specifica (in questo caso il recorder)

echo $recorder_running;

if [ "$recorder_running" -gt "0" ];
  then
    echo 'recorder is running ok';
    #agite di conseguenza
    else
      echo 'recorder is NOT running!';
      #agite di conseguenza
fi;
Titolo: Re:come verificare che applicazione gambas sia in esecuzione
Inserito da: Gianluigi - 31 Maggio 2021, 17:24:11
Non so se un domani mi potrà servire, ma ti ringrazio molto per la condivisione  :D  :ok:

 :ciao:
Titolo: Re:come verificare che applicazione gambas sia in esecuzione
Inserito da: vuott - 31 Maggio 2021, 21:19:22
... i metodi "standard" che cercano il PID dell'applicazione non funzionano, perche' in realta' l'applicativo gambas e' interpretato ed i pid restituiti sono quelli dell'inteprete "gbr3".

Quale codice - in breve - hai utilizzato ?


Ad ogni modo ogni eseguibile .gambas lanciato avvia un diverso processo.
Fintanto che il processo è attivo, alcuni file di sistema creati dal processo continuano a esistere. Se il processo è stato terminato, quei file invece non saranno più esistenti.
Così per verificare l'attività di un eseguibile .gambas, si potrebbe proporre ad esempio questo codice:
Codice: [Seleziona]
Private Const NOME_ESEGUIBILE As String = "nome_del_programma_eseguibile.gambas"


Public Sub Main()

  Dim tm As Date

  tm = Now

' Verifica se esiste il file sistema "cmdline" del processo dell'eseguibile di cui verificare l'attività:
  While Exist("/proc" &/ CStr(7041) &/ "cmdline")
' Se il predetto file di sistema "cmdline" esiste, allora vuol dire che l'eseguibile .gambas è ancora attivo:
    Write "\r\e[32mL'applicazione " & Quote(NOME_ESEGUIBILE) & " ancora attiva. " &
             Str(Time(0, 0, 0, DateDiff(tm, Now, gb.Millisecond)))
  Wend

  Write "\r\e[31mL'applicazione " & Quote(NOME_ESEGUIBILE) & " non è più attiva !\e[0m      "

End
Titolo: Re:come verificare che applicazione gambas sia in esecuzione
Inserito da: astragalo - 02 Giugno 2021, 00:31:55
Ciao, grazie per le condivisioni molto interessanti.

Io per evitare l'avvio di più  istanze dello stesso programma utilizzato  la creazione di un file di lock.

All'avvio del programma  verifico l'esistenza del file, se è  presente il programma  è  in esecuzione ed evito do avviarlo ancora, chiaramente durante la chiusura del programma cancello il file di lock.

A presto.