我正在尝试使用子进程不断地将字符串从C++程序发送到Python程序。
C++程序持续运行。
下面是我的C++程序:
#include <iostream>
#include <math.h>
#include <unistd.h>
int main(){
std::printf("This Sucks");
}下面是我的Python程序:
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程序能够读取这些数据。
要实现这一点,我需要做哪些更改?
发布于 2021-04-25 08:47:53
python程序期望一次读取一行。每一行都以换行符结尾。
您的C++程序将无休止地打印相同的字符串,但不带尾随的换行符。所以,对于Python程序来说,这看起来就像是一行无休止的行,所以它只是一直在读,一直读,直到耗尽内存。
只需在字符串末尾添加换行符"\n“即可。
https://stackoverflow.com/questions/67248733
复制相似问题