[pyar] os.dup(), threads y os.read()
Marcos Dione
mdione en grulic.org.ar
Mie Dic 2 05:11:18 ART 2015
On Tue, Dec 01, 2015 at 08:29:35PM -0300, Claudio Freire wrote:
> Pero lo que hiciste no es cerrar el lado del pipe que escribe en
> stdin, sino cerrar el lado que lee.
es un pipe?
> Así que intentar leer de un fd cerrado es exactamente un "Bad file descriptor".
con eso estoy de acuerdo, pero ni eso tengo, read() sigue bloqueado y
no me lo esperaba...
> Lo que deberías hacer, que, sí, es medio una goma, es usar dos fd en
> el thread, stdin, y un pipe:
>
> f = os.dup(0)
> rwake, wwake = os.pipe()
> fcntl.fcntl(f, fcntl.F_SETFL, fcntl.fcntl(f, fcntl.F_GETFL) | os.O_NONBLOCK)
> def foo(f, wake):
> r,w,x = select.select([f,wake], [], [f,wake])
> if wake in r:
> break
> if f in r:
> d = os.read(f, 1024)
> os.write(wake, 'w')
ok, una lástima, ensuciar así mi clasecita que simula (si, mula)
splice(). boh, la vida es una caja de chocolates finos, a veces te toca
el de frutas horrible...
--
(Not so) Random fortune:
A veces hay que mentir / a veces hay que decir la verdad / y otras veces hay que callar, y seguir
[...]
A veces hay que matar / a veces hay que saber perdonar / y otras veces hay que olvidar, y reír...
-- Árbol, "Ya lo sabemos"
More information about the pyar
mailing list