traspasar FD entre procesos

Alvaro Herrera alvherre en alvh.no-ip.org
Lun Ago 20 18:01:34 CLT 2007


rodrigo ahumada escribió:
> 
> --- Alvaro Herrera <alvherre en alvh.no-ip.org> escribió:
> 
> > rodrigo ahumada escribió:
> > > hola
> > > 
> > > tengo la siguiente consulta:
> > > 
> > > es posible que un proceso traspase un FD a otro
> > > proceso?
> > > 
> > > es decir, por ejemplo creo un proceso que lance un
> > > socket servidor, y que continuamente este
> > ejecutando
> > > accept, con eso obtiene un socket cliente, y se lo
> > > "inyecta" a otro proceso para que trabaje con
> > el...
> > > 
> > > ya se que puede usarse fork, pero la idea es que
> > el
> > > proceso acepte nuevos FD despues de haber sido
> > creado.
> > 
> > No.  Quizas podrias usar threads para eso pero yo no
> > te lo recomendaria.
> > 
> > Es muy caro el fork?  Nota: eso que describes es lo
> > que Postgres hace.
> 
> bueno, en linux esta harto optimizado, pero la mejor
> forma de atender a 20000 sockets es lanzar N procesos
> o hebras (N = numero de cpus), y que estos se encargen
> de 20000/N sockets cada uno mediante poll (o epoll)
> no?

No necesariamente; depende de que tipo de procesamiento haya en la
atencion a cada uno.  Si es sencillo, claro, eso puede ser lo mejor.  De
lo contrario atender a uno puede dejar esperando al resto durante mucho
tiempo.

-- 
Alvaro Herrera                         http://www.flickr.com/photos/alvherre/
"El destino baraja y nosotros jugamos" (A. Schopenhauer)


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