Delivery Status Notification (Failure)

Gabriel Genellina gagsl-py2 en yahoo.com.ar
Lun Mayo 19 10:08:48 CEST 2008


En Sun, 18 May 2008 14:50:23 -0300, kalith kalith <kalith.9 en gmail.com> escribió:

> si quiero aprender.. pero es dificil cuando no t salen las cosas se q es
> algo sencillo seria molestia si t pidiera algo de doc sobre el comando q me
> pasast es q no entiendo bn lo q hace

os.dup2(descriptor_nuevo, descriptor_destino) trabaja con descriptores de archivo al nivel del sistema operativo (no objetos `file` de Python). Reemplaza el descriptor_destino con el descriptor_nuevo (y si el destino estuviera abierto, primero lo cierra) de manera que tanto descriptor_destino como descriptor_nuevo referencian al mismo archivo <http://docs.python.org/lib/os-fd-ops.html>
Para obtener el descriptor de archivo de un objeto `file`, se usa el metodo fileno() <http://docs.python.org/lib/bltin-file-objects.html>

Entonces esta linea:
os.dup2(sock.fileno(), sys.stdout.fileno())
significa que sys.stdout va a escribir directamente en el socket `sock`. Haciendo algo parecido para sys.stdin y sys.stderr, redirigimos las entradas y salidas del proceso para que apunten a ese socket. Y como esa es una caracteristica que heredan los procesos hijos, si despues ejecutamos un shell como subproceso, el shell va a leer los comandos desde el socket y escribir su salida tambien ahi.
Pero hay poco y nada de Python en toda esta magia - es cosa del S.O. en realidad.

-- 
Gabriel Genellina

------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es