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);
    
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章