终端中子进程的返回值

问题描述 投票:0回答:1

我如何通过以下代码返回通过main.py启动的python子进程的值:

subprocess.check_output(['lxterminal -e  python3 rfid_input.py'], stdin=subprocess.PIPE, shell=True, close_fds=True)

父进程:

import sys, subprocess
value = subprocess.check_output(['lxterminal -e  python3 rfid_input.py'], stdin=subprocess.PIPE, shell=True, close_fds=True)
print(value)

子进程包含一个简单的x=input(),如下所示:

import sys
x=input()
sys.stdout.write(x)

但是Ii仍然没有收到任何空的b''

[我也通过subprocess.Popen.wait().communicate()进行了尝试,但均未成功。

如果您还有其他想法如何获得lxterminal输入的值,请告诉我。

python subprocess stdout python-3.7
1个回答
0
投票

为了将数据传递到标准输入,您的设置通常看起来像这样

import subprocess

stdin = b"THE DATA YOU PASS"
terminal = subprocess.Popen(["lxterminal", "-e", "python3", "rfid_input.py"],
                            stdin=subprocess.PIPE,
                            stdout=subprocess.PIPE,
                            stderr=subprocess.PIPE)
stdout, stderr = terminal.communicate(stdin)

当不带参数调用.communicate时,它通常传递空字节,这可能就是这里发生的情况。

© www.soinside.com 2019 - 2024. All rights reserved.