[英]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.