Successivo: , Precedente: , Su: Esempi di estensione   [Contenuti][Indice]


17.7.3 Un’interfaccia a 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"