Differenze tra le versioni di "Individuare ed estrarre il PID di un programma"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
− | L'argomento in questione tratta di come cercare, individuare e raccogliere il PID di un programma esterno | + | L'argomento in questione tratta di come cercare, individuare e raccogliere il PID di un programma esterno |[[#Note|1]]|. |
Riga 5: | Riga 5: | ||
<BR>Mostremo la soluzione più breve con il comando bash: ''pgrep -f nome_programma''. | <BR>Mostremo la soluzione più breve con il comando bash: ''pgrep -f nome_programma''. | ||
− | '''Public''' Sub | + | '''Public''' Sub Button1_Click() |
Dim index As String | Dim index As String | ||
Riga 21: | Riga 21: | ||
Print sotto$[0] | Print sotto$[0] | ||
+ | '''End''' | ||
+ | |||
+ | |||
+ | In questo altro caso mostreremo una soluzione <SPAN style="text-decoration: underline">senza</span> ''Shell'', ma con il solo uso delle funzioni di Gambas: | ||
+ | |||
+ | '''Public''' Sub Button1_Click() | ||
+ | |||
+ | Dim h1, pid As String | ||
+ | Dim h2 As String[] | ||
+ | |||
+ | For Each pid In Dir("/proc") | ||
+ | |||
+ | If Exist("/proc/" & pid & "/status") Then | ||
+ | h1 = File.Load("/proc/" & pid & "/status") | ||
+ | h2 = Split(h1, "\n") | ||
+ | |||
+ | If h2[0] Like "*nome_programma*" Then | ||
+ | <FONT color=#006400>' ''Mostra il numero del PID del programma:''</font> | ||
+ | Print pid | ||
+ | Exit | ||
+ | Endif | ||
+ | |||
+ | Endif | ||
+ | |||
+ | Next | ||
+ | |||
'''End''' | '''End''' | ||
Riga 28: | Riga 54: | ||
Private hp As Process | Private hp As Process | ||
− | pid As Integer | + | Private pid As Integer |
'''Public''' Sub Button1_Click() | '''Public''' Sub Button1_Click() |
Versione delle 21:38, 13 ago 2012
L'argomento in questione tratta di come cercare, individuare e raccogliere il PID di un programma esterno |1|.
Caso in cui il programma esterno non sia gestito dal programma.gambas mediante process.
Mostremo la soluzione più breve con il comando bash: pgrep -f nome_programma.
Public Sub Button1_Click() Dim index As String Dim sotto$ As String[] ' Otteniamo il PID dei processo (programma) aperto: Shell "pgrep -f nome_programma"] To index ' La variabile index sarà composta da due righe, contenenti caratteri numerali e separate da un ritorno a capo. ' Le andremo a distinguere in due sotto-stringhe distinte: sotto$ = Split(Trim$(index), "\n") ' Poiché la prima parola, restituita da "pgrep", è proprio il numero del PID del programma, ' andiamo a leggere la prima sotto-stringa dell'array. Qui è contenuto il PID del programma: Print sotto$[0] End
In questo altro caso mostreremo una soluzione senza Shell, ma con il solo uso delle funzioni di Gambas:
Public Sub Button1_Click() Dim h1, pid As String Dim h2 As String[] For Each pid In Dir("/proc") If Exist("/proc/" & pid & "/status") Then h1 = File.Load("/proc/" & pid & "/status") h2 = Split(h1, "\n") If h2[0] Like "*nome_programma*" Then ' Mostra il numero del PID del programma: Print pid Exit Endif Endif Next End
Caso in cui il programma esterno sia stato lanciato dal nostro programma.gambas e sia gestito mediante process.
Private hp As Process Private pid As Integer Public Sub Button1_Click() hp = Shell "nome_programma" ' Il numero del PID, ottenuto con il metodo " .Id" di Process, ' di un programma esterno gestito mediante "process", è uguale al numero del PID + 1 : pid = hp.Id + 1 Print pid End
Note
[1] Attenzione ! L'intento è quello di ottenere il PID del programma in quanto processo, non della finestra del programma !