[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