[Tech] Fork
Franco Bagnoli
bagnoli@dma.unifi.it
Mer 9 Giu 2004 14:18:11 CEST
On Wed, 9 Jun 2004, Luca Cecchi wrote:
> Ho un programma nel quale avvio un processo (siamo sotto Linux) con fork.
> Nel processo figlio lancio un nuovo programma. Mi è capitato di scrivere il
> nome del programma nuovo in modo errato con il risultato della chiusura del
> processo figlio.
> Il problema è questo: come faccio a comunicare al processo padre che il
> figlio è concluso? Pensavo di utilizzare i segnali e qualcosa nel padre del
non sono il guru del fork, ma direi che ci sono due strade:
1) dal processo padre controlli che il figlio sia ancora vivo (con il
signal 0), tipo
pid=fork();
sleep(3); /* o fai qualcos'altro */
if (kill(pid, 0)) {
perror("il bimbo è morto >8{}< \n");
}
2) ottieni il pid del padre prima del fork
con getpid , fai il fork e se va tutto bene mandi il segnale. il padre nel
frattempo dovrà aspettare o fare qualcos'altro. Come vedi, tanto vale fare
i controlli al livello del padre
--
Franco Bagnoli (franchino) <bagnoli@dma.unifi.it>
virtual location: Dipartimento di Energetica "S. Stecco"
ultra-virtual affiliation: Centro Dinamiche Complesse (CSDC-Firenze)
real location: Dip. Matematica Applicata "G. Sansone", Universita' Firenze,
Via S. Marta, 3 I-50139 Firenze, Italy. Tel. +39 0554796422, fax: +39 055471787
Maggiori informazioni sulla lista
flug-tech