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"