Newsgroup: it.comp.os.linux.development
Titolo: fork e socket

ciao a tutti , 
sto' sviluppando un demone che gestisca varie partizioni logiche create con
user-mode-linux , sono ancora in fase abbastanza sperimentale , percui la
direttiva primaria per ora è stata di aggiungere il massimo numero di
funzioni e successivamente preoccuparsi del debugging.
ho 5 anni di esperienza in c , ma ho sempre programmato senza usare socket /
fork percui sto' imparandone il funzionamento man mano che scrivo il
codice.
Ho un problema relativo alla fine di un fork , praticamente il processo
principale (padre) apre un socket AF_UNIX e lo usa per interagire con un
altro programma che gli passa i comandi , in alcune situazioni il processo
fa' fork ed esegue successivamente una execve.
per chiudere i processi uso il gestore SIGCHLD che lancia una wait.
il problema è che mentre il padre è in read dal socket se un processo figlio
finisce la read riceve '\t' e il padre fa' un giro a vuoto non riconoscendo
il comando , potrei risolvere il problema implementando un comando '\t' che
richiede una ritrasmissione dei dati sul socket , ma sospetto che ci sia
una soluzione piu' semplice  che non vedo , qualcuno ha un idea?
questo è il trace del problema:
---------------------------------------------------------------------
accept(4, 0xbffff840, 0xbffff83c, 0x08071950, 2056)                           
= 5
read(5,
 <unfinished ...>
 --- SIGCHLD (Child exited) ---
 wait(0xbffff5a0)                                                              
= 9126
 <... read resumed> "", 3221223732)                                            
= -1
 malloc(16)                                                                    
= 0x80542d0
 read(5, "\t", 16)                                                             
= 4
 strcpy(0x80563e8, "\t")                                                       
= 0x80563e8
 strlen("\t")
----------------------------------------------------------------------
i sorgenti se qualcuno li volesse vedere sono su'
http://savannah.nongnu.org/projects/lparmanager
se qualcuno vuole l' ultima versione in sviluppo puo' chiedermela via email
a m.ancillotti AT retesintesi PUNTO it.
tra l' altro se qualcuno volesse collaborare al progetto anche
sporadicamente ne avrei molto bisogno.
ciao , e grazie in anticipo.
marco.
-- 
-------------------------------------------------------------------------------
- Sapete dove selezionano i meccanici della Ferrari?
- A Napoli...  Se ti fermi al semaforo ti smontano le gomme in 3 secondi!
                -- Da it.hobby.umorismo
-------------------------------------------------------------------------------

nessuno sa' darmi una dritta ?
-- 
-------------------------------------------------------------------------------
Sono appena tornato da un congresso medico su bulimia ed anoressia.
Un disastro!  I bulimici si sono mangiati gli anoressici.
                -- Daniele Luttazzi
-------------------------------------------------------------------------------

 nessuno sa' darmi una dritta ?
a parte il fatto che nessuno è obbligato a risponderti, direi che dalla
tua spiegazione non si capisce nulla....

 tua spiegazione non si capisce nulla....
scusatemi , non intendevo che qualcuno fosse obbligato..... chiedevo
soltanto.
cmq hai ragione , la spiegazione è tutto tranne che chiara , cerchero' di
riformulare la cosa in maniera migliore e di ripostarla.
intanto grazie.
-- 
-------------------------------------------------------------------------------
Paradosso di Puskin:
        Meno si ama una donna, piu' si e' sicuri di possederla.
-------------------------------------------------------------------------------