Python C程序子进程挂在“ITER中的行”

Python C程序子进程挂在“ITER中的行”

好的,我正在尝试从python脚本中运行一个C程序。目前,我正在使用一个测试C程序:

#include <stdio.h>int main() {while (1) {
    printf("2000\n");
    sleep(1);}return 0;}

来模拟我将要使用的程序,它不断地从传感器获取读数。然后我尝试读取输出(在本例中)"2000")来自于在python中具有子进程的C程序:

#!usr/bin/pythonimport subprocess

process = subprocess.Popen("./main", stdout=subprocess.PIPE)while True:
    for line in iter(process.stdout.readline, ''):
            print line,

但这行不通。通过使用print语句,它运行.Popen排队等候for line in iter(process.stdout.readline, ''):直到我按下Ctrl-C。

这是为什么?这正是我所见过的大多数示例作为它们的代码,但它并不读取该文件。

编辑:

是否有办法使它只有在有东西可读的时候才能运行呢?


白猪掌柜的
浏览 419回答 3
3回答

绝地无双

看见读行文档.你的代码:process.stdout.readline在等EOF或者换行。我不知道您最终想做什么,但是在printf中添加一个换行符,例如,printf("2000\n");至少应该让你开始。
打开App,查看更多内容
随时随地看视频慕课网APP