linux监控程序自启动!!

    在网上找了一个Linux的监控程序,主要功能是,实现目标程序异常关闭后,自动重启。

    监控程序如下:原作者可能是:http://blog.csdn.net/yiyaaixuexi/article/details/7068378

#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;  
} 
    编译之后,使用shell脚本运行,出现问题。说什么 can't fork 网上找了找,但是没找到有帮助的东西。但是手动执行就没有问题。守护程序名是Guard,然后存放在sd卡上面,然后shell脚本就加一句/sdcarc/Guard。

    手动执行的时候,Guard是在当前目录下面,而shell中是/sdcard/Guard,会不会是这个原因的,尝试修改shell如下:

    cd /sdcard 

    ./Guard &

    Ok!!真的运行起来了,而且可以实现开机自启动了。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值