Problemas con puertos en linux

Alvaro Gili alvarogili en gmail.com
Jue Jun 24 17:06:33 CLT 2010


 vos me decis que use la funcion fcntl para ejecutar en lugar de system?
tienes algun ejemplo? Gracias de antemano

Message: 19
Date: Tue, 22 Jun 2010 18:00:22 -0400
From: Alvaro Herrera <alvherre en alvh.no-ip.org>
Subject: Re: Problemas con puertos en linux
To: linux <linux en listas.inf.utfsm.cl>
Message-ID: <1277243817-sup-7255 en alvh.no-ip.org>
Content-Type: text/plain; charset=UTF-8

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.

--


Más información sobre la lista de distribución Linux