c++ - 下载一个二进制文件,关闭当前的并启动新的

标签 c++ linux windows cross-platform

如果存在这个问题,我很抱歉,我在谷歌搜索时无法具体找到这种情况,坦率地说,我什至不确定要使用什么标签。

我正在开发一个带有启动器的解决方案。但是有一个问题:我的团队不想让启动器和实际程序成为两个不同的二进制文件,我认为这是一个概念错误。

无论哪种方式,他们都不会改变主意,因此我们将继续这样做。

程序的“启动器”部分目前已成功在我们的服务器上获取新版本。 但是,我希望能够在下载新版本后立即退出当前二进制文件,删除旧版本,启动新版本。

除此之外,它还必须是多平台的。

现在,如果我没记错的话,我认为在 Linux 上,很有可能删除硬盘驱动器上的二进制文件,因为它在内存中运行。不过,我真的非常不确定它是否可以在 Windows 上完成。

是否可以删除当前在 Windows 上运行的程序,并指示以某种方式启动新程序?

告诉我你的想法。在我看来,这听起来确实不可行,但如果可以做到,我真的很想知道怎么做。 至少,如果在任何一个操作系统上都无法完成,我会向我的团队展示答案。

预先感谢您,对于非常模糊的“假设”问题等,我们深表歉意。

最佳答案

我同意你的看法,这可能不是一个好主意。之前提过这个问题。

How can a C++ binary replace itself?

答案包括如何在 Windows 上执行此操作的说明,其中“shim”的使用允许您使用启动器执行您描述的操作,而无需实际自己开发此启动器。

关于c++ - 下载一个二进制文件,关闭当前的并启动新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47862182/

相关文章:

C++:向元组添加元素

php - 在 PHPinfo() 中找不到 “mysql”;

linux - svn 提交后 Hook 没有在工作副本目录中创建文件的权限

java - 运行 java jar 文件及其使用的文件路径。 (Windows 7 和 Windows 2008 服务器)

java - 从 Windows 中的 Java 程序运行命令提示符

c++ - 为什么在 C++ 中使用 boost multi_array 索引类型来索引 boost 数组?

c++ - 使用 OpenCV 访问网络摄像机

c++ - 如何从另一个文件调用类构造函数?

linux - 如何将 tail 与 syslog 文件环绕一起使用?

windows - 如何使 Windows 文件锁定更像 UNIX 文件锁定?