c - 在 C 中重新启动程序

标签 c linux signals kernel

您好,我有一个用 C 语言编写的程序。我有全局变量、数组、动态变量以及数组等...我向我的程序发送 SIGHUP,然后在处理程序中清理动态内存。我想重新启动我的程序用 HUP 编程。有没有办法在 c 中重新启动程序?我想退出并从 main 返回,以便清理由 main 中的静态数组处理的内存并重新启动 main。

你好。我编辑了信号处理程序并在处理程序中添加了 execv。在处理程序中,我有 2 个函数。首先是 clean_up();清理动态数组,第二个是 execv()。发送 HUP 后,首先运行 clean_up,然后运行 ​​execv。但过了一会儿我有段错误。但是,当我不调用 clean_up func 时,它工作正常吗?清理有问题吗?。但清理工作与其他信号很好,例如终止信号

还有一个关于 execv 的问题?它不是从 main 启动新程序吗?当我调用 execv 时,它不会再次从 main 启动

最佳答案

因为你在 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;
}

关于c - 在 C 中重新启动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10206190/

相关文章:

c - 尝试用 C 编写一个洗牌的函数

python - 如何从Python中的两个文件中找到共同的模式集?

c++ - 识别/生成波形?

c - 不确定为什么在 C 中洗牌时出现段错误

c - 多个文件和结构,不同的输出

c - x86 汇编代码中的指针引用

linux - 如何使用 perf 收集一些可读的堆栈跟踪?

linux - 嵌入式 Linux - 启动阶段

linux - 女士监视器缺少事件,并显示其他多个

c++ - alarm() 在随机时间后生成 SIGALRM