Linux Qt应用程序的守护精灵

当我们希望应用程序被意外关闭、中止后,能够立即重新启动,就需要守护精灵来帮忙。

P.S.:不是病毒不是病毒……

实现方案

1.先启动守护

2.在守护中加载启动Qt应用程序,例子中我的测试Qt应用程序名为:myApp 。

特别注意

1.在PC本地,启动Qt应用程序:

execle("./myApp","",NULL , environ);

2.而我在ARM板子上实验的时候,上述语句就不能正常执行,需要进一步将其完整化,与此同时,嵌入式Linux Qt没有X11的支持,需要qws:

execle("./myApp","./myApp","-qws",NULL,environ);

参考代码

#include <stdlib.h>    #include <string.h>    #include <unistd.h>       extern char **environ;   enum{       START = 0,       WAIT,       STOPPING,   };   int main(int argc, char **argv)   {       int status = 0, mode = START;       pid_t pid ;          while(1)       {           switch(mode)           {               case START:                   pid = fork();                   if(!pid){                       execle("./myApp","",NULL , environ);                       //execle("./myApp","./myApp","-qws",NULL,environ);                    }                   if(pid > 0)                       mode = WAIT;                   break;               case WAIT:                   if(waitpid(pid, &status, 0) < 0)                   {                       mode = START;                       break;                   }                   else if(WIFSIGNALED(status)||WIFSTOPPED(status)||WIFEXITED(status))                   {                       mode = START;                   }else{                       mode = WAIT;                   }                   break;               default:                   break;           }       }       return 0;   }  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyfjdp.html