[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: OT - Pipe entre tres procesos



On Fri, Dec 04, 2009 at 02:17:50PM -0800, Rodrigo Gallardo wrote:
> On Fri, Dec 04, 2009 at 04:08:15PM -0300, Enzo Cappa wrote:
> > ¡Hola!
> > 
> > ¿Alguien sabe si es posible construir un pipe entre tres procesos, un 
> > productor y dos consumidores?
> > Es decir, por ej., hacer un hecho de uno y que eso lo lean otro dos procesos 
> > simultáneamente.
> > Si es posible, por favor ayudenme a descubrir como.
> 
> No, no se puede.
> 
> En principio podrías pasarle el descriptor de archivo del lado de
> lectura a cualquier número de procesos, pero cada byte que se escriba
> en el pipe puede ser leido por cualquiera de ellos y no hay ninguna
> garantía de cual va a ganar. Cualquier resultado desde "repartir un
> byte a cada lector en orden" hasta "un sólo lector recibe todo y los
> demás nada" es perfectamente válido.
> 
> Probablemente lo que tendrás que hacer es escribir un proceso
> multiplexor, que lea del pipe y lo reparta con el criterio que desees
> a los demás.
> 

Hola,

Por lo que he entendido, quieres hacer algo como (de la info de
coreutils):

* tee invocation::              Redirect output to multiple files or
* processes.

     wget -O - http://example.com/dvd.iso \
       | tee >(sha1sum > dvd.sha1) \
             >(md5sum > dvd.md5) \
       > dvd.iso

     tardir=your-pkg-M.N
     tar chof - "$tardir" \
       | tee >(gzip -9 -c > your-pkg-M.N.tar.gz) \
       | bzip2 -9 -c > your-pkg-M.N.tar.bz2

¿Es algo como esto lo que quieres hacer?
Consulta info coreutils (tee) para más información.

Saludos.


Reply to: