1. 使用Shell脚本
创建一个Shell脚本,其中包含需要执行的程序,然后使用一个无限循环来检测该程序是否正在运行,如果没有运行,则重新启动它。
#!/bin/bash
while true; do
if pgrep -x "target_program" > /dev/null; then
sleep 1
else
/path/to/target_program
fi
done
将以上脚本保存为restart_target_program.sh,将"target_program"替换为你要重启的程序的名称,然后给予执行权限并运行该脚本:
chmod +x restart_target_program.sh
./restart_target_program.sh
这样脚本会检测"target_program"是否在运行,如果没有运行,则重新启动它。
2. 使用C/C++程序
编写一个C/C++程序,使用fork()和exec()函数来创建一个新的进程并执行目标程序。
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc, char* argv[]) {
if (argc!=2)
{
printf("Enter the application execution path you want to monitor \r\n");
return 0;
}
while (1) {
pid_t pid = fork();
if (pid == 0) {
// 子进程
execl(argv[1], NULL);
perror("execl"); // 如果execl调用失败则输出错误信息
return 1;
}
else if (pid > 0) {
// 父进程
int status;
waitpid(pid, &status, 0); // 等待子进程终止
}
else {
perror("fork"); // 如果fork调用失败则输出错误信息
return 1;
}
}
return 0;
}
将以上代码保存为restart_target_program.c(或restart_target_program.cpp),。然后编译该程序并运行它:
gcc restart_target_program.c -o restart_target_program
./restart_target_program /path/to/target_program(将"/path/to/target_program"替换为你要重启的程序的路径和名称)
这样程序会不断重启目标程序。
请注意,以上方法中的脚本或程序会不断检测和重启目标程序,因此请确保你的目标程序不会导致无限循环或造成系统资源耗尽。如果目标程序需要传递参数,需要相应地修改上述代码。