Differenze tra le versioni di "Kill()"
(2 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 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>( | + | 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> |
− | + | 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( | + | <FONT color=Gray>' ''int kill (__pid_t __pid, int __sig)'' |
− | Private <FONT color=#B22222>Extern kill_C</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() | |
<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" | |
− | |||
− | |||
+ | End | ||
− | + | ||
+ | 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> | |
− | + | hp.Close | |
− | + | End | |
Oppure volendo chiudere la stessa applicazione Gambas: | Oppure volendo chiudere la stessa applicazione Gambas: | ||
Private Const SIGKILL As Integer = 9 | Private Const SIGKILL As Integer = 9 | ||
− | + | ||
− | <FONT color=Gray>' ''int kill( | + | <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> | 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 | Dim c As Short | ||
− | + | Do | |
If c == 300 Then <FONT color=#B22222>kill_C(Application.Handle, SIGKILL)</font> | If c == 300 Then <FONT color=#B22222>kill_C(Application.Handle, SIGKILL)</font> | ||
Inc c | Inc c | ||
Print c | Print c | ||
Wait 0.01 | Wait 0.01 | ||
− | + | Loop | |
− | + | 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