0

我想从另一个 exe 执行一个 exe。但如果第一个 exe 正在运行,则其他 exe 无法运行。

所以我想在执行第二个 exe 之前运行 exe 并退出应用程序。

对此有任何帮助。

4

3 回答 3

1

如果不允许两个主要进程同时执行,那么您将需要一个进程位于中间。这意味着您总共需要三个进程。两个主要进程 A 和 C,以及中间的代理 B。下面是它的运行方式:

  • 进程 A 执行。
  • 进程 A 启动进程 B,传入其进程句柄。
  • 进程 A 终止。
  • 进程 B 等待进程 A 的进程句柄。当进程 A 终止时,它会发出信号。
  • 进程 B 启动进程 C。
  • 进程 B 终止。

我假设您已经知道如何创建进程、将参数传递给进程、复制句柄、等待句柄等等。

于 2015-03-10T12:53:53.430 回答
1

我不确定它在 Windows 中是如何完成的,但我认为 linux 和 windows 之间的一般准则是相同的:

你需要 fork 一个子进程,在 Linux 中这是使用 fork() 函数完成的,在 Windows 中我认为你可以使用 CreateProcess()。在此子进程中,您需要调用其中一个exec函数,该函数将此子进程的代码更改为您可以指定为 exec 函数的参数的任何可执行文件的代码。

因此,代码应该类似于以下伪代码:

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

这是一般程序,但您需要弄清楚语法

于 2015-03-10T12:48:18.110 回答
1

考虑从第一个应用程序启动的第三个应用程序。第三个检查以确保第一个已终止,然后启动第二个应用程序并自行终止。我过去不得不这样做;它工作正常。

于 2015-03-10T12:28:52.017 回答