This question already has answers here:
Make child process spawned with system() keep running after parent gets kill signals and exits
(2个答案)
在8个月前关闭。
程序
此过程将调用
该脚本将先运行“
问题是,当执行“
怎么解决呢?
我试图在终端中运行脚本文件;有用。因此,脚本没有问题。
(2个答案)
在8个月前关闭。
程序
processA
是Linux服务,由“ systemctl start processA
”启动。此过程将调用
std::system
运行Shell脚本来升级软件。该脚本将先运行“
systemctl
”以停止processA
,然后替换一些可执行文件,最后重新启动processA
。问题是,当执行“
systemctl stop processA
”时,脚本也会终止。怎么解决呢?
我试图在终端中运行脚本文件;有用。因此,脚本没有问题。
//this is how the script is called
int rs = std::system("/usr/bin/update_server.sh upgrade \"/tmp/firmware\" > \"/tmp/upgrade.log\" 2>&1");
最佳答案
systemd还将杀死子进程(毕竟,这通常是需要的),因此您无法从该服务进行升级。
但是,您可以创建oneshot service来升级与主服务冲突的二进制文件。要升级,请停止该服务,运行升级服务,然后再次启动该服务。
07-28 08:51