C++ 如何从控制台程序运行另一个外部控制台程序?
堆栈溢出用户您好! 我在制作程序时遇到问题,我问了一个问题 这里有两个控制台程序。(我制作Visual Studio 2017 C++)< /P> 第一个程序名是“A”, 第二个程序名是“B”。 程序A和B都是控制台程序。C++ 如何从控制台程序运行另一个外部控制台程序?,c++,winapi,C++,Winapi,堆栈溢出用户您好! 我在制作程序时遇到问题,我问了一个问题 这里有两个控制台程序。(我制作Visual Studio 2017 C++)< /P> 第一个程序名是“A”, 第二个程序名是“B”。 程序A和B都是控制台程序。 程序“A”检查程序“B”是否正常运行 如果程序“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;
}`
int main()//程序A
{
STARTUPINFO si={sizeof(si)};
处理信息;
ShowWindow(::GetConsoleWindow(),SW_SHOW);
while(true)
{
如果(CheckRef==true)
{
//ShowWindow(::GetConsoleWindow(),SW_HIDE);
std::cout我不能百分之百确定如何在Windows上实现它
但也许你可以把这个解决方案应用到Windows上
在Linux上,您可以从程序内部运行bash命令,这些程序也可以从启动它们的终端分离,然后在启动程序的用户下运行
现在您可以让程序B检查,如果A没有运行,那么您可以通过调用系统终端来启动程序A。
也许是地狱
如果有人知道这种方法是否适用于Windows,他们可能会反对或不同意我的意见。我不能百分之百确定如何在Windows上做到这一点
但也许你可以把这个解决方案应用到Windows上
在Linux上,您可以从程序内部运行bash命令,这些程序也可以从启动它们的终端分离,然后在启动程序的用户下运行
现在您可以让程序B检查,如果A没有运行,那么您可以通过调用系统终端来启动程序A。
也许是地狱
如果有人知道这种方法是否适用于Windows,他们可能会反对或不同意我的意见
我在第2部分遇到问题。程序“B”必须作为外部程序运行
程序与程序“A”分开。但现在,程序“B”在中运行
编程“A”控制台提示
似乎是你要找的
创建新控制台:新进程有一个新控制台,而不是
继承其父控制台(默认)
例如:
CreateProcess(NULL, (LPSTR)ProcessPath, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
我在第2部分遇到问题。程序“B”必须作为外部程序运行
程序与程序“A”分开。但现在,程序“B”在中运行
编程“A”控制台提示
似乎是你要找的
创建新控制台:新进程有一个新控制台,而不是
继承其父控制台(默认)
例如:
CreateProcess(NULL, (LPSTR)ProcessPath, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
感谢您这样留下答案!但是,。它失败了。如果我还运行Windows Powershell,它将在程序A控制台提示中运行。。。。。)也许这会有帮助。感谢您这样留下答案!但是,。它失败了。如果我还运行Windows Powershell,它将在程序A控制台提示中运行。。。。。。。。。。。如果答案有帮助,这可能会对你好Noonsom有所帮助s你可以解决问题。你的确认将帮助其他人搜索类似问题。你好,Noonsom,如果答案帮助你解决问题,你可以。你的确认将帮助其他人搜索类似问题。