gpt4 book ai didi

c - linux 覆盖正在运行的二进制文件

转载 作者:太空狗 更新时间:2023-10-29 11:27:56 27 4
gpt4 key购买 nike

我如何在 linux 中使用 C 执行此操作?我需要编写更新函数,使用 wget 下载更新,然后用更新替换旧文件,然后开始更新文件。一个想法是使用 bash 脚本,但没有成功。有什么建议吗?

编辑:这是与我尝试过的类似的代码

char *p_name = "example"; /* name of the running executable */

void update(char *update_url)
{
if(!fork())
/* download file to temporary location */
execlp("wget", "wget" "-q", update_url, "-O", "tmp", NULL);
wait(NULL);
FILE *fp = fopen("tmp.sh", "w");
/* write bash script */
fprintf(fp, "sleep 5\nmv tmp %s\nchmod +x %s\nrm tmp.sh",
p_name, p_name);
fclose(fp);
execlp("bash", "bash", "tmp.sh", NULL);
}

最佳答案

覆盖正在运行的程序实际上并没有覆盖文件,它基本上是创建一个新文件,同时标记旧文件以在程序退出时删除。

在您的脚本下载新程序后,您必须杀死 正在运行的程序,然后重新启动它。它将从新程序开始。

关于c - linux 覆盖正在运行的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7997474/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com