首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用process实现从C++程序到Python程序的数据获取

用process实现从C++程序到Python程序的数据获取
EN

Stack Overflow用户
提问于 2021-04-25 08:40:11
回答 1查看 99关注 0票数 1

我正在尝试使用子进程不断地将字符串从C++程序发送到Python程序。

C++程序持续运行。

下面是我的C++程序:

代码语言:javascript
复制
#include <iostream>
#include <math.h>
#include <unistd.h>
int main(){
std::printf("This Sucks");
}

下面是我的Python程序:

代码语言:javascript
复制
import os
import signal
from subprocess import Popen, PIPE, STDOUT
process = Popen('./Subprocess', stdin=PIPE,stdout=PIPE, universal_newlines = True, shell = True, preexec_fn = os.setsid)
while True:
        output = process.stdout.readline()
        if output == '' and process.poll is not None:
            break
        if output:
            print(output)

在上面显示的表单中,Python程序将读取并打印"This Sucks“一次。但是,如果我将C++程序中的打印语句放在一个循环中,使其重复打印,Python程序将挂起并且不打印任何内容。

我需要Python程序中的print语句在while循环中连续运行,并且C++程序必须能够在无限期运行时从C++程序中读取,并反复不断地打印"This Sucks“。

最终目标是让C++程序连续打印出传感器数据,并使Python程序能够读取这些数据。

要实现这一点,我需要做哪些更改?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-25 08:47:53

python程序期望一次读取一行。每一行都以换行符结尾。

您的C++程序将无休止地打印相同的字符串,但不带尾随的换行符。所以,对于Python程序来说,这看起来就像是一行无休止的行,所以它只是一直在读,一直读,直到耗尽内存。

只需在字符串末尾添加换行符"\n“即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67248733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档