c - 如何让程序自动重启? (Linux进程)

标签 c linux process operating-system

我试图让我的程序自行重启,但似乎没有任何效果。我尝试使用 fork(),但是在杀死 the parent 进程 the child 之后也被杀了。

代码

void sigup_handler(int signum) {
    int pid = fork();
    if (pid == 0) {
        execve("prog2", NULL); 
    }
    else
        kill(getpid(), SIGTERM);
}

int main() {
    puts("Program 2 started.");
    signal(SIGHUP, sigup_handler);
    sleep(50); 
    puts("Program 2 terminated.");
    return 0;
}

最佳答案

如果您只是要杀死 the parent,为什么还要费心使用fork?只需执行 exec。该程序的新实例仍将是相同的进程,但实际上会重新启动。

关于c - 如何让程序自动重启? (Linux进程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302323/

相关文章:

process - 我不明白 stdio 缓冲如何与子进程交互

linux - Redhat rcp_bh 服务 cpu 爆满

c - C中的二维字符数组操作

c - 程序一次又一次询问输入宽度?该怎么办? C语言新功能

.net - 配置 Jenkins 以在 Linux 平台上运行 MSBuild

c - 如何从 $1 重新开始命名 GDB 的内部变量?

c++ - 在 `return 0` 末尾设置 `main` 可选的理由是什么?

c - 如何检查我是否有权打开文件而不在 C 中的 Linux 上打开它?

linux - 如何使用 egrep 只返回一行的一部分

powershell - 等待使用凭据启动的进程时访问被拒绝