从Visual Studio 2017运行MPI应用程序,每个进程在不同的cmd窗口中
Run MPI Application from Visual Studio 2017 with each process in a different cmd window
使用Visual Studio 2017,我正在尝试运行一个类似于黑桃游戏的MPI应用程序。运行它后,我想为 4 名玩家中的每个人打开一个 cmd 终端,以便他们每个人都可以在轮到他采取行动时输入他的卡选择。
我尝试了很多选项,包括转到项目属性 ->调试并将命令更改为$(MSMPI_BIN)mpiexec
,将命令参数更改为-np 4 "$(TargetPath)"
- 请参阅下面的链接:
命令和命令参数
但是,除了同时运行 4 个进程之外,我仍然打开了一个终端,它对我的任何键盘输入都没有反应。
有没有办法使用 Visual Studio 调试打开 4 个终端?还是其他方式?在cmd/bash中运行"mpiexec.exe -np 4 MyExec.exe"提供与上述相同的结果。
提前致谢
我认为这是不可能的。
我尝试在 mpi 测试程序上使用AllocConsole()
,每个进程都返回一个错误,因为它认为已经附加了一个控制台。
在某种程度上,这似乎是合乎逻辑的,因为 mpiexec 将启动进程,并且每个标准输出都将定向到相同的输出(文件或控制台(,至于 stdin,您必须选择哪个进程将处理它(通过手动判断 https://www.open-mpi.org/doc/v3.0/man1/mpiexec.1.php -stdin 选项(。
这些重定向肯定由进程管理器管理(https://wiki.mpich.org/mpich/index.php/Frequently_Asked_Questions(
正如@Evg所说,从"黑桃游戏"的典故来看,我认为 MPI 不是你需要的。也许更多的 unix 域套接字。但它们是进行进程间通信的其他方法 (https://en.wikipedia.org/wiki/Inter-process_communication(
- 创建进程 API 失败,在窗口 122 上出现错误代码 10
- 通过 pid 窗口判断进程是否存在
- C++ 窗口本地系统模拟在子进程中失败
- 如何在窗口上设置使用 CreateProcess 创建的新进程的主线程的堆栈大小?
- 有没有办法为使用 Boost 生成的进程创建新的控制台窗口
- 提升 1.58.0 窗口进程.h 错误
- 在单个进程中使Qt顶级窗口被其他非Qt窗口"owned"
- 查找窗口找不到进程
- 将窗口句柄从一个进程使用到另一个进程(插件 vst 音频)
- Win32/Gdigrab - 如何将另一个进程窗口设置为无边框
- 强制将以SW_HIDE启动的进程中的窗口显示为STARTUPINFO
- 有没有办法接收有关在窗口中启动的进程的事件
- 窗口 :创建仅具有对我的进程的权限的目录 (C++)
- 如何在没有窗口类的情况下编写QT系统托盘应用程序,并将其与另一个进程集成
- 如何获取具有可见窗口的任何进程的名称 - WinAPI?
- C++ Windows CreateChildProcess - 隐藏/不显示子进程的控制台窗口
- 如何使用在窗口中使用C++从CreateToolhelp32Snapshot获取64/32位进程详细信息和进程信息
- 如何在列表框窗口进程中捕获VK_ESCAPE
- 将 CreateProcess() 的 stdout 重定向到管道并在另一个进程 c++ 窗口中读取它
- C + + Kill进程窗口标题