Successivo: Esempio di estensione Inplace, Precedente: Esempio di estensione Fnmatch, Su: Esempi di estensione [Contenuti][Indice]
fork()
, wait()
, e waitpid()
L’estensione fork
mette a disposizione tre funzioni, come segue:
@load "fork"
Questo è il modo per caricare l’estensione.
pid = fork()
Questa funzione crea un nuovo processo. Il valore restituito è zero nel
processo “figlio” e il numero che identifica il nuovo processo
(pid) nel processo “padre”, o -1
in caso di errore. In quest’ultimo caso, ERRNO
indica il problema.
Nel processo figlio, gli elementi PROCINFO["pid"]
e
PROCINFO["ppid"]
vengono aggiornati per riflettere i valori corretti.
ret = waitpid(pid)
Questa funzione ha un unico argomento numerico, l’identificativo del processo
di cui aspettare l’esito. Il codice di ritorno è quello restituito dalla
chiamata di sistema waitpid()
.
ret = wait()
Questa funzione attende che il primo processo “figlio” termini.
Il valore restituito è quello della chiamata di sistema wait()
.
Non c’è una funzione corrispondente alla chiamata di sistema exec()
.
Ecco un esempio:
@load "fork" … if ((pid = fork()) == 0) print "salve dal processo figlio" else print "salve dal processo padre"