与 Python 中子进程中的另一个应用程序的交互式会话
Interactive session with another application in child process in Python
我有一个用任何语言编写的应用程序(.exe)。C++并希望从 python 运行应用程序。我可以通过以下教程运行这个简单的应用程序 Python 代码 此处 https://docs.python.org/2/library/subprocess.html
from subprocess import Popen, PIPE
process = Popen([r"C:Users...x64DebugProject13.exe"],stdout = PIPE,
stderr=PIPE, stdin = PIPE)
stdout = process.communicate(input = b"Bob")[0]
print(stdout)
C++代码:
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
void foo(string s) {
for (int i = 0; i < 3; ++i)
{
cout << "Welcome " << s << " ";
Sleep(2000);
}
}
int main()
{
string s;
cin>> s;
foo(s);
return 0;
}
这对我来说很好用。但是,如果我多次读取应用程序中C++输入,如下所示:
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
int main()
{
string s;
for (int i = 0; i < 3; ++i)
{
cin >> s;
cout << "Welcome " << s << " ";
Sleep(2000);
}
return 0;
}
在这里,我无法多次使用 process.communication(),因为孩子在返回时已经退出。基本上,我想以连续会议的形式与该计划互动。 我想要建议或任何其他方法来解决此问题?提前谢谢。
假设你正在Windows上工作,我建议看看namedpipes,在python端你可以使用PyWPipe,在c ++端,你必须编写自己的包装器来获取进程的消息。
相关文章:
- 为多个会话保留XPtr
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- 如何修复 Onnx运行时会话>运行问题?
- 与 stdio 同步是否使程序 I/O 非交互式?
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 为什么 KMS drmModeSetCrtc() 在 X11 会话中运行时会失败并被拒绝权限?
- 如何在带有 gdb GUI 前端的 ARM gdbserver 的 PC 上执行远程 gdb 会话?
- 宽藤会话更新无休止循环
- Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话
- 在Win7上,在默认端点上轮询音频会话有时会崩溃
- 如何在gedit中使用外部工具运行交互式C++程序
- 自动测试不会显示在会话前端中。虚幻引擎
- CSActiveMQ CPP 生产者 - 一个会话可以使用多个队列吗?
- Tensorflow C++关闭会话后不释放 GPU 资源
- 在没有外部文件的情况下在应用会话之间保存变量
- 有没有办法在 C 或 C++ 中嵌入 Sh/Bash 会话?
- 与 Python 中子进程中的另一个应用程序的交互式会话
- Tensorflow C++ 代码 SessionFactory::GetFactory 如何选择使用哪个会话?直接会话
- Libssh2:在"每个线程的通道"基础上在线程之间共享 ssh 会话是否安全?
- 是否可以判断交互式用户会话是自动启动还是用户手动登录?