我如何使用C在linux中执行此操作? 我需要编写使用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);
}
答案 0 :(得分:7)
覆盖正在运行的程序实际上并不会覆盖该文件,它基本上会创建一个新文件,同时标记要在程序退出时删除的旧文件。
脚本下载新程序后,必须kill
正在运行的程序,然后重新启动它。它将从新计划开始。