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

Re: OT - Pipe entre tres procesos



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.


Pero hay que aclarar que es una redirección, no un pipe

Saludos


Reply to: