分叉和杀戮 C++崩溃了 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 将返回启动它的 shell 的进程 ID。 所以你正在杀死外壳,这就是你下降到登录屏幕的原因。
另请参阅:
getppid(( 不返回父级的 PID
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 在Ubuntu 16.04上安装Cilk时出现问题
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 程序崩溃并显示"std::out_of_range"错误
- 如何在Ubuntu中使用cmake设置qt4
- CoInitialize()在单独的线程上崩溃而不返回
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 使用调试/崩溃报告将应用程序部署到客户端
- 为什么所有C++编译器都会崩溃或挂起此代码
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- 为什么我的多线程作业队列崩溃
- OpenGL 在 VMWare Fusion 版本 10.1.3 上安装的虚拟机 (Ubuntu 16.04) 上崩溃
- 在 Ubuntu 服务器上运行 QT 应用程序时崩溃
- 如果程序在没有 sudo 的情况下运行,gtk_init会导致 ubuntu 16.04 崩溃
- 分叉和杀戮 C++崩溃了 ubuntu
- 简单的教程SFML代码在Ubuntu 16.04上崩溃
- Emacs 24.3.1, Ubuntu 14.04.1 LTS, gdb在Emacs中的窗口切换都崩溃了
- curl_easy_perform()在Ubuntu Server 14上崩溃
- libstdc++在ubuntu 64位中崩溃