我开始使用Ubuntu的“快速”框架,它基于python / gtk。我想为使用stdin / stdout的textmode C状态机编写一个gui包装器。
我是gtk的新手。我可以看到python print命令将写入终端窗口,所以我假设我可以将它重定向到我的C程序的stdin。但是如何让我的快速程序监控stdin(即观察C程序的stdout响应)?我想我需要某种轮询循环,但我不知道在“快速”框架内是否支持/何处。
或重定向不是要走的路 - 我应该看看像gobject.spawn_async这样的东西吗?
答案 0 :(得分:4)
select的gtk版本是glib.io_add_watch,你可能想要将进程的stdin / stdout重定向到GUI,你可以查看我以前写过的文章:
http://pygabriel.wordpress.com/2009/07/27/redirecting-the-stdout-on-a-gtk-textview/
答案 1 :(得分:2)
我不确定快速框架,但在Python中你可以使用子进程模块,它产生一个新的子进程,但允许通过stdin / stdout进行通信。
http://docs.python.org/library/subprocess.html
看看文档,但这非常有用。
如果您想进行投票,可以使用gobject.timeout_add。
你要创建一个像这样的函数:
def mypoller(self):
data = myproc.communicate()
if data[0]: #There's data to read
# do something with data
else:
# Do something else - delete data, return False
# to end calls to this function
这样可以让您从流程中读取数据。