【发布时间】:2018-01-31 03:49:05
【问题描述】:
我有一个从 Windows 上的 cmd.exe 运行的程序。我想在程序启动时打开第二个 cmd.exe。然后程序会接收来自cmd.exe的stdin的数据来处理,程序的数据会到cmd.exe的stdout。
两个cmd.exe的stdin和stdout是独立的。该程序还可以显示有关第一个 cmd.exe 的信息。它不是重定向。
在 linux 上,我可以使用 proxy_openpt() 和 system("xterm -SX/X") 来控制终端的输入和输出。
我尝试过 createprocess() 和管道,但我不知道如何获取第二个 cmd.exe 的句柄以接收其输入。
请帮帮我,非常感谢!!!
【问题讨论】:
-
CMD 不是控制台或终端;它是一个控制台客户端应用程序,与您自己的应用程序没有什么不同。默认情况下,您的标准 I/O 连接到控制台输入和屏幕缓冲区。如果它是你的父进程,这个控制台可能是从 CMD 继承的,但这就是 CMD 参与的程度。
-
一个进程一次只能附加到一个控制台,但您可以生成附加到新控制台的应用程序的另一个实例(即
CREATE_NEW_CONSOLE创建标志)。然后使用IPC与之配合,不限于标准手柄和管道。