Контроль запуска банок через ShellExecuteEx - PullRequest
0 голосов
/ 25 октября 2018

у нас есть проект Java.Он имеет 5 команд CLI, которые указывают на Project.jar

, они выглядят как

  1. пример сервера: это процесс сервера, который продолжает работать в CMD и не выполняетзакрыть.

  2. пример клиентского агента: это клиентский процесс, который продолжает работать во втором CMD и не закрывается.Это не может начаться, пока «пример сервера» не запустится полностью.

3, 4, 5: это следующие команды, такие как «пример входа в систему, ... пример записи» и т. Д., Которые можно запуститьв одном cmd.Они не могут запуститься до тех пор, пока «пример сервера» и «пример клиента» не запустятся полностью.

Теперь я пытаюсь запустить все эти jar-файлы через исполняемый файл C ++

Я не могу использовать оболочку как,если я дал shellexecute для каждой из команд java -jar, все они запускались одновременно (чего я не хочу).Поэтому я использую ShellExecuteEx что-то вроде этого:

 SHELLEXECUTEINFO A= { 0 };
A.cbSize = sizeof(SHELLEXECUTEINFO);
A.fMask = SEE_MASK_NOCLOSEPROCESS;
A.hwnd = NULL;
A.lpVerb = NULL;
A.lpFile = L"\\java.exe";
A.lpParameters = L"-jar";
A.lpDirectory = NULL;
A.nShow = SW_SHOW;
A.hInstApp = NULL;
ShellExecuteEx(&A);
WaitForSingleObject(A.hProcess, 20000);

 SHELLEXECUTEINFO B= { 0 };
B.cbSize = sizeof(SHELLEXECUTEINFO);
B.fMask = SEE_MASK_NOCLOSEPROCESS;
B.hwnd = NULL;
B.lpVerb = NULL;
B.lpFile = L"\\java.exe";
B.lpParameters = L"-jar";
B.lpDirectory = NULL;
B.nShow = SW_SHOW;
B.hInstApp = NULL;
ShellExecuteEx(&B);
WaitForSingleObject(B.hProcess, 20000);


  SHELLEXECUTEINFO C= { 0 };
C.cbSize = sizeof(SHELLEXECUTEINFO);
C.fMask = SEE_MASK_NOCLOSEPROCESS;
C.hwnd = NULL;
C.lpVerb = NULL;
C.lpFile = L"\\java.exe";
C.lpParameters = L"-jar";
C.lpDirectory = NULL;
C.nShow = SW_SHOW;
C.hInstApp = NULL;
ShellExecuteEx(&A);
WaitForSingleObject(C.hProcess, 10000);

Теперь я знаю, что жесткое программирование времени не является хорошей практикой.Могу ли я сделать что-то такое, что C будет выполняться после запуска A и B?

...