【发布时间】:2009-07-29 11:18:08
【问题描述】:
我有一个 C++ exe;在特定情况下,我需要停止 exe 并重新启动它。这必须在同一个 exe 内完成,而不是从外部完成。实现这一目标的最佳方法是什么?
我的猜测是启动一个新的进程实例,然后杀死正在运行的进程。但是是否有任何直接的 API 可以做到这一点,比如 RestartProcess() 或其他什么?如果不是,你有什么建议?
【问题讨论】:
-
嘿生锈,只是出于兴趣,你为什么要把它变成一个社区维基?
-
最好解释一下您认为需要这样做的原因 - 可能有更好、更简单的解决方案。
-
@Neil:不知道 rusty,但我有时会实现非常相似的东西,以支持自动升级正在运行的软件,无需任何用户干预:程序重命名当前应用程序。 exe 到 app_old.exe,然后下载新的 .exe 并将其作为 app.exe 写入磁盘,然后调用 CreateProcess()。失败时,仍在运行的旧版本会删除新的 app.exe,将 app_old.exe 重命名为 app.exe,并记录错误。在明显成功时,它只是自行关闭。但如果您有更好的解决方案,请告诉我们! (我这样做非常像Sharptooth向他解释=> +1。:)
-
(我知道这种方法听起来可能有些滥用,实际上我在编写实现时也有同样的感觉……但最后,它运行得很好。)
-
好的,原因是外部硬件触发。在这种情况下必须重新启动该过程。