【发布时间】:2010-04-23 19:19:52
【问题描述】:
我希望 python 向用 C++ 编写的可执行文件发送大约 50 万个 0-255 范围内的整数。然后这个可执行文件将响应几千个整数。每个在一条线上。这似乎对子流程来说应该非常简单,但我遇到了无穷无尽的麻烦。现在我正在使用代码进行测试:
// main()
u32 num;
std::cin >> num;
u8* data = new u8[num];
for (u32 i = 0; i < num; ++i)
std::cin >> data[i];
// test output / spit it back out
for (u32 i = 0; i < num; ++i)
std::cout << data[i] << std::endl;
return 0;
在python中构建一个字符串数组(“data”),每个都像“255\n”,然后使用:
output = proc.communicate("".join(data))[0]
...不起作用(说标准输入已关闭,可能一次太多了)。使用 proc.stdin 和 proc.stdout 都没有工作。这应该非常简单,但是我经常遇到异常,和/或没有输出数据返回给我。我的 Popen 目前是:
proc = Popen('aux/test_cpp_program', stdin=PIPE, stdout=PIPE, bufsize=1)
在我拔头发之前给我建议。 ;)
【问题讨论】:
-
你是把数据项的数量作为第一个数字发送吗?
-
是的 - cpp 代码显示,忘记提及了。
标签: python subprocess