[pyar] Pasar datos de un proceso a otro en Linux?

Manuel Naranjo naranjo.manuel en gmail.com
Vie Ago 27 16:04:08 ART 2010


>
> 2010/8/27 Roberto Alsina <ralsina en netmanagers.com.ar 
> <mailto:ralsina en netmanagers.com.ar>>
>
>     Con qué sistema operativo?
>
>     Si es Linux, una solución "fácil" es usar DBus. Hacés que el
>     programa que
>     tiene los datos atienda en un nombre en el bus de sistema, y
>     cuando el otro
>     quiere datos, se conecta y los pide.
>
>
> Ok, esa está buena, más que nada si ya estás usando DBus.
>
> Si tuvieras que transmitir muchos datos, pensá que podés usar un canal 
> "dual" - por DBus le mandás los mensajes de "tenés un frame nuevo", y 
> tirás el path al archivo con el frame. O lo pasás con memoria 
> compartida (mmap). O con un socket. Toneladas de opciones para 
> transmitir binario.
>
> Lo bueno de memoria compartida es que los objetos de memoria 
> compartida en python los ves como strings, es muy natural de usar.

Y que les parece esto:

import os
os.mkfifo('/tmp/test.pipe')
fdr = os.open('/tmp/test.pipe', os.O_NONBLOCK|os.O_RDONLY)
// esto es necesario para que la próxima llamada no falle
fd = os.open('/tmp/test.pipe', os.O_NONBLOCK|os.O_WRONLY)
os.close(fdf)
os.write(fd, 'hola mundo\n')
os.read(fdf, 2000) // limpiar buffer

En otra ventana sólo se hace cat /tmp/test.pipe y se ve como sale la info

Parece medio ineficiente no? Más que nada por la parte de que hay que 
limpiar el buffer me parece. Alguien sabe si el kernel va a limpiar la 
tubería por mi?

Manuel
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100827/3044c788/attachment.html>


More information about the pyar mailing list