Excerpts from Alvaro Gili's message of mar jun 22 16:56:14 -0400 2010:
> 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.

system() hace fork internamente.  Quizás lo que está pasando es que el
FD se hereda desde tu proceso hacia el FTM a través del shell.  Creo que
lo que deberías hacer es cerrar tu socket antes de llamar a system().
Otra posibilidad sería darle un fctnl(FD_CLOEXEC) para que se cierre
automáticamente con ese fork/exec.

-- 
Álvaro Herrera <[email protected]>

Responder a