贴吧的各位大佬们,你们好!
我近期在学习使用subprocess的时候遇到了困难,
我希望使用subprocess实现一个在单独进程内运行的命令行程序。
基本实现如下
1 我构建了一个C程序,十分简单,就是从标准输入读取命令,然后输入相应的文本到标准输出,代码如下:
#include "stdio.h"
#include "stdlib.h"
int main()
{
char s[100];while (1)
{
printf(">>>");
scanf("%s",s);
}
}
2 我将这个c程序编译,生成a.out, 运行的也是正常的,然后使用subprocess.Popen,调用这个程序,希望能够实现自动化的调用:
# main.py
import sys, time
import subprocess
def main(argc: int, argv: list):
code = "utf-8"
p = subprocess.Popen(["./a.out"],
# shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
inp = ""
while inp != "@":
inp = input("请输入命令>>>")
p.stdin.write(inp.encode(code))
p.stdin.write(("\n").encode(code))
p.stdin.flush()
out = p.stdout.readline()
print("返回值>",out.rstrip())
if __name__ == "__main__":
main(len(sys.argv), sys.argv)
然而效果却不如人意,因为我在运行的过程中会在 “out = p.stdout.readline()” 这里卡死,一直不能读取到内容
我尝试过网上的构建一个线程强行读取,但是读取到的却是空值。
我不太清楚问题出在哪里,希望贴吧大佬有没有入能帮忙解答一下
我近期在学习使用subprocess的时候遇到了困难,
我希望使用subprocess实现一个在单独进程内运行的命令行程序。
基本实现如下
1 我构建了一个C程序,十分简单,就是从标准输入读取命令,然后输入相应的文本到标准输出,代码如下:
#include "stdio.h"
#include "stdlib.h"
int main()
{
char s[100];while (1)
{
printf(">>>");
scanf("%s",s);
}
}
2 我将这个c程序编译,生成a.out, 运行的也是正常的,然后使用subprocess.Popen,调用这个程序,希望能够实现自动化的调用:
# main.py
import sys, time
import subprocess
def main(argc: int, argv: list):
code = "utf-8"
p = subprocess.Popen(["./a.out"],
# shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
inp = ""
while inp != "@":
inp = input("请输入命令>>>")
p.stdin.write(inp.encode(code))
p.stdin.write(("\n").encode(code))
p.stdin.flush()
out = p.stdout.readline()
print("返回值>",out.rstrip())
if __name__ == "__main__":
main(len(sys.argv), sys.argv)
然而效果却不如人意,因为我在运行的过程中会在 “out = p.stdout.readline()” 这里卡死,一直不能读取到内容
我尝试过网上的构建一个线程强行读取,但是读取到的却是空值。
我不太清楚问题出在哪里,希望贴吧大佬有没有入能帮忙解答一下