Individuare ed estrarre il PID di un programma
Vai alla navigazione
Vai alla ricerca
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 !