这个的实现纯粹是用Linux编程来做,与QT 无关
实现方法: 使用守护进程
//********************************************
//创建守护进程
//监视目标进程是否结束,是则无条件重启目标程序
//********************************************
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
#define MAXFILE 0xffff
int main()
{
pid_t pc;
int i;
signal(SIGCHLD,SIG_IGN);//防止出现僵尸
pc = fork(); //新建一个子进程
if(pc < 0) //处理
{
printf("error fork\n");
exit(1);
}
else if(pc > 0)
exit(0);
setsid(); //创建一个新的会话期
chdir("/"); //改变当前目录为根目录
umask(0); //重设文件权限掩码
for(i = 0;i < MAXFILE;i ++)
close(i); //关闭文件描述符
while(1) //开始守护进程
{
if(fork() == 0) //新建子进程
{
if(execl("/usr/bin/mybin","mybin",(char *)0) < 0) //在这里指定被守护的文件目录及文件名
perror("execl error!");
}
sleep(2);
}
}