在C中重新启动程序

bar*_*arp 4 c linux kernel signals

嗨,我有一个用C编写的程序.我有全局变量,数组,动态变量以及数组等...我发送SIGHUP到我的程序和处理程序我清理动态内存.我想用HUP重新启动我的程序.IS有没有办法在c中重启程序?我想退出并从main返回,以清理由main和restart main中的静态数组处理的内存.

你好,我们又见面了.我编辑了信号处理程序并在处理程序中添加了execv.在处理程序中我有2个功能.首先是clean_up(); 清理动态数组,第二个是execv().发送HUP后,首先运行clean_up然后执行execv.但是经过一段时间后我就陷入了错误.但是,当我不调用clean_up函数时,它运行正常吗?清理有问题吗?但清理工作正常,其他信号,例如终止信号

还有execv的问题?.不是从主程序启动新程序吗?.当我调用execv时,它不再从main启动

orl*_*rlp 7

因为你在Linux上,我认为这是最干净的方式:

int main(int argc, char **argv) {
    /* your program here */

    /* if you want to restart call this */
    if (execv(argv[0], argv)) {
        /* ERROR, handle this yourself */
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)