linux下C++程序实现自重启

程序自重启有很多应用的场景,比如程序升级,通过网络下载好升级包后,自行重启,又比如程序容错,意外或无法解决的问题导致程序内某个业务卡死等。

程序的重启很多时候通过守护进程的方式来实现,这里介绍一种直接通过系统内核命令把自己重启的实现。

while(1){
    //遍历应用打开的系统文件句柄
    for(int i=0;i<sysconf(_SC_OPEN_MAX);i++){
        //过滤标准输入输出并关闭
        if(i != STDIN_FILENO && i != STDOUT_FILENO && i != STDERR_FILENO)
            close(i);
    }
    //程序启动命令
    char *args[] = {(char*)"myprogram.exe",(char*)"config.json",0};
    //调用系统内核
    execv("/proc/self/exe",args);
    exit(0);
    
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值