sábado, 24 de julho de 2010

executando programas de forma assíncrona com glib.spawn_async

a função glib.spawn_async executa um programa assincronamente (seu código não ira bloquear esperando pelo fim da execução do programa)

o programa é especificado por um único argumento que deve ser fornecido. Por padrão, deve-se especificar o path do programa, exemplo "/bin/ls".

exemplo de uso:
import glib, gtk, os

class spaw_async(object):
   
    def __init__(self):
       
        pid = glib.spawn_async(["/bin/sleep", '3'])[0]
        glib.timeout_add(100, self.terminar, pid)
       
       
    def terminar(self, pid):

        try:
            os.kill(pid, 0)
            return True
           
        except OSError:
            print "o processo terminou"
            gtk.main_quit()
            return False
       
spaw_async()
gtk.main()

glib.spawn_async retorna uma tupla com 4 itens que são: pid stdin stdout e stderr.

Nenhum comentário:

Postar um comentário