Individuare ed estrarre il PID di un programma

Da Gambas-it.org - Wikipedia.
Versione del 13 mar 2012 alle 07:08 di Vuott (Discussione | contributi) (Nuova pagina: L'argomento in questione tratta di come cercare, individuare e raccogliere il PID di un programma{1}, non lanciato dal programma .gambas con ''process''. <BR>Daremo la soluzi...)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

L'argomento in questione tratta di come cercare, individuare e raccogliere il PID di un programma{1}, non lanciato dal programma .gambas con process.
Daremo la soluzione con il comando bash ps aux | grep nome_programma, e mostreremo la predetta soluzione facendo l'esempio di come impedire che il medesimo programma .gambas sia erroneamente lanciato due volte.
E', dunque, necessario ottenere il PID del programma{1}.


Public Sub Form_Open()

 Dim index As String
 Dim plura As String[]
 Dim a, b, c As Integer

' Otteniamo il PID dei processi (programmi) aperti, aventi il medesimo "nome_programma.gambas":
   Shell "ps -aux | grep " & "nome_programma" To index
 
 plura = Split(index, " ")

 c = plura.Count

 For a = 0 To c - 1

' Cerca il riferimento al 1° programma aperto (cioè a se stesso):
   If Right(plura[a], 20) Like "*.gambas*" Then

' Così può passare a "Kill" la stringa, contenuta da ciascuna variabile "plura"
' "successiva" alle stringhe che si riferiscono al 1° processo (che resta così protetto),
' sino a quando non passerà la stringa contenente il PID del 2° processo che si è appena aperto:
     For b = a To 100
' Non appena viene passato il PID del 2° processo, questo viene terminato:
       Try Shell "kill " & plura[b]
     Next

   Endif

 Next

End


Note

[1] Attenzione ! L'intento è quello di ottenere il PID del programma in quanto processo, non della finestra del programma !