如何在C ++程序中打开一个新的cmd.exe并获取它的句柄

时间:2018-01-31 03:49:05

标签: c++ winapi cmd handle

我有一个从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()和pipe,但我不知道如何处理第二个cmd.exe来接收它的输入。

请帮助我,非常感谢!!!

3 个答案:

答案 0 :(得分:1)

只有一个Windows控制台可以与Windows上的单个进程相关联。

但是,你当然可以使用一些IPC来控制另一个进程,它只是你的第二个控制台。 Helios 在cplusplus.com上写了一个简单的例子,说明如何做到这一点:链接链接在“Extra consoles”。

代码可以按原样使用,但您始终可以使用它来通知您自己的代码。

答案 1 :(得分:0)

您可以尝试:

start cmd.exe @cmd /k "Command

或:

start cmd.exe
start file.cmd 

答案 2 :(得分:0)

您可以使用与PROCESS_INFORMATION一起使用的CreateProcess结构来获取句柄。

PROCESS_INFORMATION documentation