C++ 中的 fork and kill 崩溃 ubuntu
Fork and kill in C++ crashes ubuntu
我的一小段代码有问题。
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 将 return 启动它的 shell 的进程 ID。所以你正在杀死 shell,这就是你掉到登录屏幕的原因。
另请参阅:
getppid() not returning parent's pid
我的一小段代码有问题。
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 将 return 启动它的 shell 的进程 ID。所以你正在杀死 shell,这就是你掉到登录屏幕的原因。
另请参阅:
getppid() not returning parent's pid