[pyar] clonar un pipe

Daniel Moisset dmoisset en machinalis.com
Lun Oct 11 15:37:19 ART 2010


2010/10/11 Luciano Bello <lbello en gmail.com>:
> In [1]: import os
> In [2]: (r1,w1)=os.pipe()
> In [3]: os.write(w1, "123456789")
> Out[3]: 9
> In [4]: os.read(r1,2)
> Out[4]: '12'
> In [5]: (r2,w2,)=clone_pipe(r1,w1)
> In [6]: os.read(r1,2)
> Out[6]: '34'
> In [7]: os.read(r2,2)
> Out[7]: '34'
>
>        Alguna idea si esta función existe? En cado de no existir,
> como la harían?

No que yo sepa. El tema es que el buffer que queres duplicar esta en
kernel-space, con lo cual tiene que ser una syscall; no son tantas y
no vi nada parecido nunca.

Si lo tuviera que hacer en terminos generales haría un modulo de
kernel, con una syscoll que duplique el objeto pipe en sí...

Si tenes alguna restriccion de quienes acceden al pipe (por ejemplo
sabes que todo es python puro y no hay nadie usando el filedescriptor
directamente) posiblemente podes hacer algo que emule el
comportamiento del pipe

Saludos,
  D.



More information about the pyar mailing list