APUE两次fork防止产生僵尸进程的例程相关——子进程没有被init收留的问题

2023-05-16

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

APUE两次fork防止产生僵尸进程的例程相关——子进程没有被init收留的问题

  • 一、问题
  • 二、证明

一、问题

首先看书上的例程与结果
请添加图片描述
按道理来说,第一个子进程被收掉之后,第二个子进程会被init进程收留,书上写的很明显了。

然后看我的程序与结果。
请添加图片描述
请添加图片描述
不论复现多少次,第二个子进程都被pid为1516的进程收留,而不是init进程。
pid为1516的进程是什么呢?在这里插入图片描述
是/lib/systemd/systemd --user。这也就有一个可能,随着linux版本更新或者gcc等更新,有些标准可能就变了。

二、证明

代码如下:
请添加图片描述

可以看到,(sleep调用前)第二个子进程的pid为59676,ppid为59675,而且ppid与第一个子进程的pid相同,确实符合fork函数的描述。然后由于第一个子进程调用了exit(0)退出了,然后被waitpid接收,那么第二个子进程就成了僵尸进程,同时也是个孤儿进程,因为没有第一个子进程waitpid它了。于是在调用完sleep后,第二个子进程发现自己的父进程没了,于是应该由init进程收留它,可能是因为版本变化,现在改为/lib/systemd/systemd来收留它了,由此记录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APUE两次fork防止产生僵尸进程的例程相关——子进程没有被init收留的问题 的相关文章

  • 推箱子游戏JS实现

    参考以下教学视频编写 教学视频 xff1a Canvas画布实现推箱子游戏 HTML5前端设计JavaScript原生开发 哔哩哔哩 bilibili 箱子地图 Boxdata js 1 xff1a 围墙 2 xff1a 目标点 3 xff
  • 五子棋游戏JS实现

    参考教学视频 xff1a Canvas画布案例 五子棋 1 基础 哔哩哔哩 bilibili 1 棋盘设计 xff0c 落子功能 lt DOCTYPE html gt lt html gt lt head gt lt meta charse
  • JS五子棋(AI)

    JS五子棋 AI xff09 跟随算法 xff1a 白棋始终跟随当前黑棋周围 span class token doctype span class token punctuation lt span span class token do
  • Discuz7.2漏洞

    发布日期 xff1a 2010 01 06 更新日期 xff1a 2010 01 07 受影响系统 xff1a Discuz Discuz 7 1 Discuz Discuz 7 2 描述 xff1a Discuz 是一款华人地区非常流行的
  • vfp常见问题和代码

    1 VFP为何在编译时提示找不到菜单生成程序 xff1a 设置 GENMENU 系统内存变量到适当的路径和文件 例如 假定 FoxPro 安装在 C 盘上的 VFP 中 在命令窗口打入以下命令来恢复系统变量的值 GENMENU 61 34
  • VFP中Form的重要概念

    本文所指的 34 表单窗口属性 34 是指那些不但影响表单本身的特征 xff0c 而且对表单之外 项目之中的其它 34 元件 34 有影响的表单属性 xff0c 它们是 xff1a 属性 意义 可选值 黑体为默认值 DeskTop 指定表单
  • MacOS M1芯片安装PyQt5的方法

    MacOS M1芯片安装 PyQt5 的方法 关于PyQt5 PyQt5 是GUI 小部件工具包 xff0c 是 Qt 的 Python 接口 xff0c 是图形界面开发库 xff0c 用于程序的用户交互界面 按照官网 PyQt5 pypi
  • iOS富文本编辑(在label里显示文字和图片)

    在开始写之前先看一下效果图 在此效果图中有富文本中指定的位置添加图片 xff0c 还有最后位置添加的图片信息 代码如下 调用方法 给label赋值 NSString Str 61 64 34 中国人民解放军万岁 xff0c 中华人民共和国万
  • ubuntu下安装VNC远程桌面的详细步骤

    作者 xff1a 转自 xff1a http www 5loveb com 4 515 html Virtual Network Computing VNC 是进行远程桌面控制的一个软件 客户端的键盘输入和鼠标操作通过网络传输到远程服务器
  • 服务器esxi安装

    一 部署raid0或raid1 xff08 Raid0的配置过程与Raid1大致相同 xff0c 唯一不同是在选择Raid级别这一步选择Raid0即可 xff09 xff08 一 xff09 在RAID卡适配器自检页面按组合键Ctrl 43
  • MFC编辑框数据读写

    简介 xff1a 有几种常用的获取编辑框内容和写入的方法 xff0c 初学者往往容易迷惑 1 第一种 通过GetDlgItem和GetWindosText char szEdit 10 61 0 int nEdit 61 0 GetDlgI
  • Peer cert cannot be verified or peer cert invalid 解决方法

    yum安装软件时报Peer cert cannot be verified or peer cert invalid xff0c 如下图所示 xff1a 解决办法 xff1a 在 etc yum conf文件后追加sslverify 61
  • 在anaconda中为jupyter安装扩展插件

    安装过程 xff1a 1 在开始菜单中打开Anaconda Prompt 2 执行如下安装命令 xff1a conda install c conda forge jupyter contrib nbextensions conda ins
  • 降低代码耦合度的方法 -依赖注入

    降低代码耦合度的方法 依赖注入 什么是依赖注入为什么要使用依赖注入Laravel中的依赖注入 什么是依赖注入 什么是依赖注入 xff0c 就要先了解什么是依赖 在面向对象语言中 xff0c A类需要引用B类中Y方法的 xff0c 则称A类和
  • 接入腾讯应用宝(YSDK)注意事项

    接入腾讯ysdk只想说 xff0c 其文档写的真是差 xff01 很多东西摸不着头尾 xff0c 在这期间走了很多坑 第一个 xff1a 拉起手Q时 xff0c 出现100044画面错误 造成这个的因素有很多 xff1a 1 xff0c 未
  • ubuntu20.04 使用root用户自动登录系统

    Ubuntu20 04安装完成之后 xff0c 默认是没有root账户登录权限的 xff0c 这样在操作系统时有诸多不便 xff0c 比如新建一个文件都提示权限不够 xff01 不过可以通过创建的普通用户获取管理员权限 xff0c 然后修改
  • Ubuntu——虚拟显示器的配置、卸载、修改分辨率

    参考博客 xff1a 安装虚拟显示器 xff1a VNC远程登录无外接显示器的Ubuntu Desktop卸载虚拟显示器 远程服务器虚拟显示器 xff08 Ubuntu 20 04 LTS xff09 修改分辨率 xff1a Ubuntu
  • 修改ubuntu的默认路由

    1 sudo route del default gw 192 168 6 1 删除默认路由 2 sudo route add default gw 192 168 6 1 添加默认路由 route 命令参考https www cnblog
  • 安装opencv3.2时出现 ICV: Failed to download ICV package: ippicv_linux_20151201.tgz.

    到链接 https pan baidu com s 1tUn4so6BZc8MdVz0FbtWLA 提取码 sktn xff0c 下载ippicv linux 20151201 tgz 并替换 opencv 3 2 0 3rdparty i
  • nuscenes数据读取和解析

    1 nuScenes数据集标注格式的说明 https blog csdn net qq 29679623 article details 103698313 utm medium 61 distribute pc relevant none

随机推荐