分叉和杀戮 C++崩溃了 ubuntu

Fork and kill in C++ crashes ubuntu

本文关键字:ubuntu 崩溃 C++ 杀戮 分叉      更新时间:2023-10-16

我对我的一小段代码有问题。

void setTimeout(int time)
{
    if (fork() == 0) {
        pid_t id = getppid();
        sleep(time);
        if(kill(id, 0) == ESRCH)
            return;
        cerr << "Time out!" << endl;
        kill(id, TIMEOUT);
        return;
    }
}
当父进程

正在运行并且我不需要杀死他时,什么也没发生,它会按应有的方式关闭,但如果父进程在超时之前结束,ubuntu 就会崩溃。

谢谢你的时间。

父进程终止后,getppid 将返回启动它的 shell 的进程 ID。 所以你正在杀死外壳,这就是你下降到登录屏幕的原因。

另请参阅:

getppid(( 不返回父级的 PID