Autore Topic: come verificare che applicazione gambas sia in esecuzione  (Letto 425 volte)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
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;
se corri, morirai stanco (motto degli sniper)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:come verificare che applicazione gambas sia in esecuzione
« Risposta #1 il: 31 Maggio 2021, 17:24:11 »
Non so se un domani mi potrà servire, ma ti ringrazio molto per la condivisione  :D  :ok:

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.683
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:come verificare che applicazione gambas sia in esecuzione
« Risposta #2 il: 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
« Ultima modifica: 02 Giugno 2021, 00:32:06 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
Re:come verificare che applicazione gambas sia in esecuzione
« Risposta #3 il: 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.