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

Re: OT - Pipe entre tres procesos



On Sáb 05 Dic 2009 10:51:02 d.sastre.medina@gmail.com escribió:
> 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.
> 
¡¡Exactamente!! Muchas gracias. El script es para grabar un script en una 
cinta y mientras lo graba ir calculado una suma de verificación, de manera de 
no cargar al disco rigido con dos lecturas (es un bd y está al límite).
Pronto lo pongo en practica...
¡Saludos!


Reply to: