我使用subprocess.popen
命令扫描频率。
我的程序接收数据,但是,我很难检测到“消息的结尾” 。
因此,我正在寻找代码来检查.poll()
命令是否正在轮询,但没有接收数据。
据我在google上发现的,当没有收到数据时,该行应为”,并且只有一次,该程序通过打印几行空行来进行响应。不幸的是,这只是一次,但这可能正是我想要的。意味着2或3个空行也可能表示没有数据要接收。
multimon_ng = subprocess.Popen("rtl_fm -f 169.65M -M fm -s 22050 -p 43 -g 30 | multimon-ng -a FLEX -t raw -",
stdout = subprocess.PIPE,
stderr = open('error.txt', 'a'),
shell = True)
while True:
multimon_ng.poll()
line = multimon_ng.stdout.readline()
print(line)
如何检查子进程是否在轮询?
答案 0 :(得分:1)
如果该进程仍在运行,则poll()
将返回None
。否则,它将返回退出代码。 (From the docs)
但是,我不确定这是否对您有帮助:
wait()
进行一次调用即可,而不要使用poll()
。stdout.readline()
,然后在不退出该循环的情况下检测并处理该信号。