No gente, no existe ningún fork y uno no es hijo del otro. Simplemente mi
aplicación lo que hace es ejecutar usando la sentencia system de C al otro.
Dentro de mi aplicación hago "system("service FTM start");" y nada mas,
despues son totalmente independientes, Pero cuando cierro mi aplicación, el
puerto tcp queda asociado al proceso FTM, siendo que este es otra aplicación
totalmente distinta.
Gracias de nuevo y perdón por la insistencia pero es un error que me está
volviendo loco> > Message: 6 > Date: Tue, 22 Jun 2010 09:26:50 -0400 > From: Eduardo Silva <[email protected]> > Subject: Re: Problemas con puertos en linux > To: Discusion de Linux en Castellano <[email protected]> > Message-ID: > <[email protected]> > Content-Type: text/plain; charset=ISO-8859-1 > > el listen() y bind() los estas lanzando dentro de un fork() ?, si es asi, > lo > que comunmente se hace es apenas el hijo se crea, se registra el PID en un > archivo, y cuando el padre sale lee el archivo del PID y manda un kill() en > caso de que el proceso hijo exista, asi te aseguras de que no quede nada > corriendo. > > 2010/6/22 Alvaro Gili <[email protected]> > > > Gente, vuelvo a postear porque creo que no me hice entender. > > La aplicación que estoy haciendo yo es como por ejemplo el administrador > de > > servicios de windows o el Bum que se puede instalar el ubuntu. Es una > > aplicación que dada una lista de demonios, monitorea su estado y a su vez > > permite arrancarlos y pararlos. > > Más allá de eso, mi aplicación también levanta un web service. Entonces > la > > secuencia es asi: > > * Ejecuto mi aplicación la cual levanta su web service y muestra la lista > > de > > demonios que monitorea. > > * Ahora a través de ella ejecuto o pongo a correr uno de estos demonios > que > > monitorea. > > * Supongamos, o en realidad es asi, mi aplicación se llama TrayMon y el > > demonio que ejecuta se llama FTM. > > * Dado todos los pasos anteriores ejecuto en la consola: "sudo netstat > -nap > > | grep 3000" y me muestra en la consola: > > tcp 0 0 192.168.0.130:3000 0.0.0.0:* > > ESCUCHAR 2525/TrayMon > > * Ahora cierro mi aplicación(TrayMon) y el demonio queda corriendo (esta > > bien que sea así). Pero yo vuelvo a hacer el netstat y me muestra: > > tcp 0 0 192.168.0.130:3000 0.0.0.0:* > > ESCUCHAR 3064/FTM > > > > Observen como el puerto quedó asociado al demonio y esto no debería ser > > así, > > porque si bien el TrayMon ejecuta el FTM, son totalmente independientes > > entre si. Y por supuesto si quiero levantar de nuevo el TrayMon, me dice > > que > > el puerto está ocupado. Acá en la oficina creemos que es un problemas de > > "Padres e hijos", como que linux toma que el TrayMon es el padre del FTM > y > > por eso hace esta asociación. > > Espero haber sido mas claro que antes, gracias y saludos. > > > > > > -- > Eduardo Silva > http://edsiper.linuxchile.cl > http://www.monkey-project.com > > > > ------------------------------ > > Message: 8 > Date: Tue, 22 Jun 2010 09:37:55 -0400 > From: Rodrigo Ahumada <[email protected]> > Subject: Re: Problemas con puertos en linux > To: Discusion de Linux en Castellano <[email protected]> > Message-ID: > <[email protected]> > Content-Type: text/plain; charset=ISO-8859-1 > > eso, puede ser que se esté usando fork: > > "Programs that use sockets often fork() and each process inherits the > socket descriptor" > <http://www.faqs.org/faqs/unix-faq/socket/> > >

