[英]How to run another external console program from a console program?
你好堆栈溢出用户,我在制作程序时遇到问题,我问一个问题,,
这是两个控制台程序。 (我制作到 Visual Studio 2017 C++)
第一个程序名称是“A”,第二个程序名称是“B”。 程序 A 和 B 都是控制台程序。
我在编号 2 中遇到了问题。程序“B”必须作为与程序“A”分开的外部程序运行。 但是现在,程序“B”在程序“A”控制台提示符下运行..
请告诉我如何作为一个单独的程序运行.. Thx。
我的代码是:
int main() //Program A
{
STARTUPINFO si = { sizeof(si) };
PROCESS_INFORMATION pi;
ShowWindow(::GetConsoleWindow(), SW_SHOW);
while (true)
{
if (CheckRef == true)
{
//ShowWindow(::GetConsoleWindow(), SW_HIDE);
std::cout << " " << getStateProcess(ProcessName) << std::endl;
if (getStateProcess(ProcessName) == 0) // Check to Program "B" is Running?
{
// Program "B" is not Running. Started Program "B"
CreateProcess(NULL, (LPSTR)ProcessPath, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
Sleep(10);
}
}
else
{
ShowWindow(::GetConsoleWindow(), SW_SHOW);
system("cls");
std::cout << "Start Ref Settring. . ." << std::endl;
SetRef();
}
Sleep(500);
}
return 0;
}`
我在编号 2 中遇到了问题。程序“B”必须作为与程序“A”分开的外部程序运行。 但是现在,程序“B”在程序“A”控制台提示符下运行..
CREATE_NEW_CONSOLE
似乎是您正在寻找的。
CREATE_NEW_CONSOLE:新进程有一个新的控制台,而不是继承其父级的控制台(默认)。
像这样的一个例子:
CreateProcess(NULL, (LPSTR)ProcessPath, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
我不确定如何在 Windows 上做到这一点。
但也许您可以以某种方式将此解决方案应用于 Windows。
在 Linux 上,您可以从程序内部运行 bash 命令,这些程序也可以与它们启动的终端分离。 然后它们在启动程序的用户下运行。
现在您可以让您的程序 B 检查,如果 A 没有运行,那么您可以通过调用系统终端来启动您的程序 A。 也许是 powershell。
如果有人知道此方法是否适用于 Windows,他们可能会同意或不同意我的看法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.