美文网首页
C++程序重启实现及注意事项

C++程序重启实现及注意事项

作者: prophet__ | 来源:发表于2019-12-20 17:59 被阅读0次

    程序遇到了问题是不是应该重启解决?(首先这是一个待思考的问题)
    那么假设我现在重启确实能解决一些问题,要怎么实现呢?

    实现代码

    #include<thread>
    void restart_myself(int num)
    {
        std::cout<<"Restart"<<std::endl;
        system("./calloutsystem");
    }
    void main()
    {
    std::thread t1(restart_myself,1);
    sleep(1);
    exit(0);
    return;
    }
    

    以上这么一点小程序的玄机就在这个多线程当中,一开始的时候我将system命令放在了main里,然后在这句话后面接上exit(0),结果这个程序就像八卦一样一生二二生四四生万物。

    把system直接放在主函数当中的问题是它会阻塞线程,相当于程序进行到这里就进行不下去了,只会开一个新的程序而不会把原来这个程序关掉。

    重启条件

    1.我们要知道很多问题都是重启不能解决的,而且重启同样会带来很多其他的问题(状态量的丢失/程程序的停止/通讯的交互),所以重启要解决的是只有重启才能解决的问题。

    2.重启条件需要较为严苛,而且与启动之后再判断是否正常运行不能存在冲突(重启之后通讯会有一个接入与断开的过程,有可能一个程序的重启导致了通讯的断开,又导致了另一个程序的重启,这样会形成硬件死锁)。

    参考网站

    刚刚给大家展示的这个方法非常的不规范,C++有很多其他实现的方法,如果有兴趣的同学可以参考一下下面的网站。
    C++实现https://blog.csdn.net/kevinshq/article/details/8666848
    QT实现https://blog.csdn.net/liukang325/article/details/78625062

    相关文章

      网友评论

          本文标题:C++程序重启实现及注意事项

          本文链接:https://www.haomeiwen.com/subject/gominctx.html