相关疑难解决方法(0)

Python C程序子进程挂起"for line in iter"

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

#include <stdio.h>

int main() {
while (1) {
    printf("2000\n");
    sleep(1);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

模拟我将要使用的程序,它不断地从传感器获取读数.然后我试图"2000"从C程序读取输出(在这种情况下)与python中的子进程:

#!usr/bin/python
import subprocess

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

但这不起作用.从使用print语句开始运行该.Popen行然后等待for line in iter(process.stdout.readline, ''):,直到我按下Ctrl-C.

为什么是这样?这正是我见过的大多数示例都是他们的代码,但它没有读取文件.

编辑:

有没有办法让它只在有东西被阅读时才能运行?

c python subprocess hang

17
推荐指数
2
解决办法
5446
查看次数

如何使用javascript客户端设置Python服务器端

因此,已经有一个Python程序设置在我必须构建的控制台上运行.我将使用Javascript为应用程序构建Web GUI界面.我怎么会:

一个.在不触及原始代码的情况下,处理这个Python程序的输入/输出.

湾 通过Javascript调用将控制台行输入发送到Python程序.我已经查看了原始HTTP请求/ AJAX,但我不确定我将如何将其作为输入发送到Python程序.

javascript python

14
推荐指数
2
解决办法
2万
查看次数

使用 python 子进程 Popen 的非阻塞输出流

我想知道是否有任何方法可以处理非阻塞的情况以及从 python 子进程流式传输stdoutstderr的情况。我已经通过这个网站浏览了几篇文章,但没有一篇文章能回答这种情况。它要么通过在另一个线程中运行读取来显示,以便主线程不受影响(或)只是如何从进程中流式传输数据。我的问题是两者的结合。我想问题出在read()readline()因为它们在输出流期间以一种或另一种方式阻塞。

我想要一个可流式传输的对象,这是我的主要关注点。我附上我已经通过的参考资料以供进一步参考。

script_process = subprocess.Popen(command_sequence[i],preexec_fn=os.setsid, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    while script_process.poll() is None:
       for output in iter(lambda: script_process.stdout.readline(), b''):
           sys.stdout.writelines(output)
Run Code Online (Sandbox Code Playgroud)

python中子进程的非阻塞读取.PIPE

从子进程标准输出可靠的非阻塞读取

从需要 stdin 的子进程实时打印 stdout

在进程运行时不断打印子进程输出

是否可以将 python 子进程的输出实时流式传输到网页?

如何从`stdin`创建非阻塞连续读取?

python subprocess stdout popen

5
推荐指数
0
解决办法
1861
查看次数

标签 统计

python ×3

subprocess ×2

c ×1

hang ×1

javascript ×1

popen ×1

stdout ×1