Differenze tra le versioni di "Fork ()"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "La fuzione '''fork()''' __pid_t fork (void) crea una copia del processo. Il processo originario è chiamato "''Padre''", il processo clone è chiamato "''Figlio''". Se la fu...") |
|||
Riga 4: | Riga 4: | ||
Se la funzione ''fork()'' ha successo, essa ritorna il valore 0 (zero) al processo ''Figlio'', e ritorna al processo ''Padre'' il valore del pid del processo ''Figlio'' (che sarà esclusivo e diverso dal pid del processo ''Padre''). In caso di errore la funzione ritorna -1. | Se la funzione ''fork()'' ha successo, essa ritorna il valore 0 (zero) al processo ''Figlio'', e ritorna al processo ''Padre'' il valore del pid del processo ''Figlio'' (che sarà esclusivo e diverso dal pid del processo ''Padre''). In caso di errore la funzione ritorna -1. | ||
+ | |||
+ | L'esecuzione del processo ''Padre'' è svincolata da quella del processo 'Figlio''; e pertanto procedono indipendentemente l'una dall'altra. | ||
Versione delle 10:15, 26 giu 2016
La fuzione fork()
__pid_t fork (void)
crea una copia del processo. Il processo originario è chiamato "Padre", il processo clone è chiamato "Figlio".
Se la funzione fork() ha successo, essa ritorna il valore 0 (zero) al processo Figlio, e ritorna al processo Padre il valore del pid del processo Figlio (che sarà esclusivo e diverso dal pid del processo Padre). In caso di errore la funzione ritorna -1.
L'esecuzione del processo Padre è svincolata da quella del processo 'Figlio; e pertanto procedono indipendentemente l'una dall'altra.
Volendola utilizzare direttamente in Gambas, bisognerà dichiararla con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:
Private Extern fork() As Integer In "libc:6"
Esempio di uso in Gambas:
Library "libc:6" ' __pid_t fork (void) ' Clone the calling process, creating an exact copy. Private Extern fork() As Integer Public Sub Main() Dim pid, i, n As Integer pid = fork() If pid = 0 Then ' "fork()" ritorna 0 al processo "Figlio". ' Dunque qui siamo nel processo "Figlio": For i = 0 To 9 Print "Figlio: "; i Wait 0.3 Next Quit Else If pid > 0 ' "fork()" ritorna al processo "Padre" il pid del processo "Figlio". ' Dunque qui siamo nel processo "Padre": For n = 0 To 9 Print "Padre: "; n Wait 0.6 Next Else Error.Raise("Errore nel fork !") Endif End