Запустите Exe из другого exe

Я хочу выполнить один exe из другого exe. но другой exe не может работать, если первый exe работает.

Поэтому я хочу запустить exe и выйти из приложения до того, как будет запущен второй exe.

Любая помощь по этому вопросу.

3 ответа

Решение

Рассмотрим третье приложение, которое вы запускаете из своего первого приложения. Третий проверяет, что первый завершен, затем запускает второе приложение и завершает сам. Я должен был сделать это в прошлом; это работает отлично.

Вам понадобится процесс, который будет посередине, если вам не разрешено одновременно выполнять два основных процесса. Это означает, что вам нужно всего три процесса. Два основных процесса, A и C, и посредник посередине B. Вот как это происходит:

  • Процесс А выполняется.
  • Процесс A запускает процесс B, передавая его дескриптор процесса.
  • Процесс А завершается.
  • Процесс B ожидает на дескрипторе процесса для процесса A. Это становится сигнальным, когда процесс A завершается.
  • Процесс B запускает процесс C.
  • Процесс Б завершается.

Я предполагаю, что вы уже знаете, как создавать процессы, передавать аргументы для обработки, дублировать дескрипторы, ждать на дескрипторах и так далее.

Я не уверен точно, как это делается в Windows, но я думаю, что общие правила одинаковы для Linux и Windows:

Вам нужно форкнуть дочерний процесс, в Linux это делается с помощью функции fork(), в Windows, я думаю, вы можете использовать CreateProcess(). В этом дочернем процессе вам нужно вызвать одну из функций exec, которая изменяет код этого дочернего процесса на код любого исполняемого файла, который вы можете указать в качестве параметра для функции exec.

Таким образом, код должен быть похож на этот псевдокод:

c= CreateProcess()
if (c == child)
{
    exec("My other executable.exe")
}

Это общая процедура, но вам нужно выяснить синтаксис

Другие вопросы по тегам