2014-03-13 33 views
1

我在Python中遇到了一个小问题,我想用python启动“gsmsmsd”守护进程(读取传入的SMS)并从此守护进程读取输出。 如果我用我的控制台启动这个守护进程,那么在SMS进入之前就会有一个没有任何输出的输出,然后这个SMS显示在控制台中。 但一定要读这传入的短信成Python的解决方案....Python:如何从gsmsmsd守护进程获得输出?

首先,我有试过这样:

while True: 
    a = os.popen("gsmsmsd -d /dev/ttyACM1 -b 9600 -t SM") 
    print a 
    time.sleep(1) 

但我认为os.popen功能只读取输出后直接命令,是这样吗?如果是,短信5分钟后就没有了红色了。 我该如何解决这个问题?是否有其他的函数可以在更长的时间内从控制台读取输出,而无需多次启动守护进程?

我很乐意听到别人的声音。

电贺 雅各布

回答

0

我想你需要的是使用select模块和轮询其中somethoing在设备上编写的事件。例如: (免责声明:未经测试,可能无法正常工作,因此您应该阅读该链接):

import select 
import os 

epoll = select.epoll() 
dev = os.open("/dev/ttyACM1",os.O_RDONLY) 
epoll.register(dev, select.EPOLLIN) 
event = dev, selecet.EPOLLIN 

while True: 
    events = epoll.poll(1) 
    if event in events: 
     print dev.read()