Differenze tra le versioni di "Kill()"

Da Gambas-it.org - Wikipedia.
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 
La funzione della libreria di C
 
La funzione della libreria di C
  int kill(int pid, int signal);
+
  int kill (__pid_t __pid, int __sig)
 
è una chiamata di sistema che invia un segnale a un processo, inividuato dal suo PID e contenuto nel parametro ''pid''. Se ''pid'' è maggiore di zero, il segnale viene inviato al processo avente l'ID di processo uguale al parametro ''pid''. Se ''pid'' è 0, il segnale viene inviato a tutti i processi, tranne i processi di sistema.
 
è una chiamata di sistema che invia un segnale a un processo, inividuato dal suo PID e contenuto nel parametro ''pid''. Se ''pid'' è maggiore di zero, il segnale viene inviato al processo avente l'ID di processo uguale al parametro ''pid''. Se ''pid'' è 0, il segnale viene inviato a tutti i processi, tranne i processi di sistema.
  
 
+
Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta. Da sottolineare che, poiché questa funzione esterna di C "''kill'' " è <SPAN style="text-decoration:underline">omonima</span> alla funzione di Gambas "''Kill'' ", bisognerà assegnarle un nome a piacere, ma si dovrà anche richiamare il suo vero nome con il comando ''Exec''.
Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta. Da sottolineare che, poiché questa funzione esterna di C "''kill''" è <SPAN style="text-decoration:underline">omonima</span> alla funzione di Gambas "''Kill''", bisognerà assegnarle un nome a piacere, ma si dovrà anche richiamare il suo vero nome con il comando ''Exec''.
 
 
<BR>Dunque avremo ad esempio:
 
<BR>Dunque avremo ad esempio:
  Private <FONT color=#B22222>Extern kill_C</font>(command As String) As Integer In "<FONT color=#B22222>libc:6"</font> <FONT color=#B22222>'''Exec "kill"'''</font>
+
  Private <FONT color=#B22222>Extern kill_C</font>(__pid As Integer, __sig As Integer) As Integer In "<FONT color=#B22222>libc:6"</font> <FONT color=#B22222>'''Exec "kill"'''</font>
  
  
Semplice esempio di uso in Gambas:
+
In questo esempio si provvederà a chiudere un programma esterno ("Gedit"), aperto con l'istruzione "Shell" e di cui si gestisce il processo con le risorse della Classe "Process":
 
  Private Const SIGKILL As Integer = 9
 
  Private Const SIGKILL As Integer = 9
 
  Private hp As Process
 
  Private hp As Process
 
    
 
    
  <FONT color=Gray>' ''int kill(int pid, int signal)''</font>
+
  <FONT color=Gray>' ''int kill (__pid_t __pid, int __sig)''
  Private <FONT color=#B22222>Extern kill_C</font>(command As String) As Integer In "<FONT color=#B22222>libc:6</font>" <FONT color=#B22222>'''Exec "kill"'''</font>
+
' ''Send signal SIG to process number PID.''</font>
 +
  Private <FONT color=#B22222>Extern kill_C</font>(__pid As Integer, __sig As Integer) As Integer In "<FONT color=#B22222>libc:6</font>" <FONT color=#B22222>'''Exec "kill"'''</font>
 
   
 
   
 
   
 
   
  '''Public''' Sub Form_Open()
+
  Public Sub Form_Open()
 
   
 
   
 
  <FONT Color=gray>' ''Viene lanciato il programma editor di testo "Gedit":''</font>
 
  <FONT Color=gray>' ''Viene lanciato il programma editor di testo "Gedit":''</font>
  hp = Shell "gedit"
+
  hp = Shell "gedit"
   
 
'''End'''
 
 
   
 
   
 +
End
 
   
 
   
  '''Public''' Sub Button1_Click()
+
   
 +
Public Sub Button1_Click()
 
   
 
   
 
  <FONT Color=gray>' ''Chiudiamo il programma "gedit" mediante la funzione "kill()" di C:''</font>
 
  <FONT Color=gray>' ''Chiudiamo il programma "gedit" mediante la funzione "kill()" di C:''</font>
  <FONT color=#B22222>kill_C(hp.Handle + 1, SIGKILL)</font>
+
  <FONT color=#B22222>kill_C(hp.Handle + 1, SIGKILL)</font>
 +
 +
  hp.Close
 +
 +
End
 +
 
 +
 
 +
Oppure volendo chiudere la stessa applicazione Gambas:
 +
Private Const SIGKILL As Integer = 9
 +
 +
<FONT color=Gray>' ''int kill (__pid_t __pid, int __sig)''
 +
' ''Send signal SIG to process number PID.''</font>
 +
Private <FONT color=#B22222>Extern kill_C</font>(pid As Integer, signal As Integer) As Integer In "<FONT color=#B22222>libc:6</font>" <FONT color=#B22222>'''Exec "kill"'''</font>
 +
 +
 +
Public Sub Menu()
 +
 +
  Dim c As Short
 
   
 
   
  hp.Close
+
  Do
 +
    If c == 300 Then <FONT color=#B22222>kill_C(Application.Handle, SIGKILL)</font>
 +
    Inc c
 +
    Print c
 +
    Wait 0.01
 +
  Loop
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 11:08, 13 giu 2024

La funzione della libreria di C

int kill (__pid_t __pid, int __sig)

è una chiamata di sistema che invia un segnale a un processo, inividuato dal suo PID e contenuto nel parametro pid. Se pid è maggiore di zero, il segnale viene inviato al processo avente l'ID di processo uguale al parametro pid. Se pid è 0, il segnale viene inviato a tutti i processi, tranne i processi di sistema.

Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta. Da sottolineare che, poiché questa funzione esterna di C "kill " è omonima alla funzione di Gambas "Kill ", bisognerà assegnarle un nome a piacere, ma si dovrà anche richiamare il suo vero nome con il comando Exec.
Dunque avremo ad esempio:

Private Extern kill_C(__pid As Integer, __sig As Integer) As Integer In "libc:6" Exec "kill"


In questo esempio si provvederà a chiudere un programma esterno ("Gedit"), aperto con l'istruzione "Shell" e di cui si gestisce il processo con le risorse della Classe "Process":

Private Const SIGKILL As Integer = 9
Private hp As Process
 
' int kill (__pid_t __pid, int __sig)
' Send signal SIG to process number PID.
Private Extern kill_C(__pid As Integer, __sig As Integer) As Integer In "libc:6" Exec "kill"


Public Sub Form_Open()

' Viene lanciato il programma editor di testo "Gedit":
 hp = Shell "gedit"

End


Public Sub Button1_Click()

' Chiudiamo il programma "gedit" mediante la funzione "kill()" di C:
 kill_C(hp.Handle + 1, SIGKILL)

 hp.Close

End


Oppure volendo chiudere la stessa applicazione Gambas:

Private Const SIGKILL As Integer = 9

' int kill (__pid_t __pid, int __sig)
' Send signal SIG to process number PID.
Private Extern kill_C(pid As Integer, signal As Integer) As Integer In "libc:6" Exec "kill"


Public Sub Menu()

 Dim c As Short

 Do
   If c == 300 Then kill_C(Application.Handle, SIGKILL)
   Inc c
   Print c
   Wait 0.01
 Loop

End