僵尸进程的基础学习

embedded/2024/12/22 0:26:17/

1、概念

        僵尸进程指的是处于僵尸态的进程,这种进程无法进行调度,但其所占用的系统资源并未被释放。僵尸态是进程生命周期的必经阶段,是无法避免的,但为了节约系统资源,应尽快清理腾出僵尸态进程所占用的内存资源。

2、产生的原因

        当一个程序的代码流程从main函数返回后,进程就结束了,但此时不能立即退出,因为还需要向其父进程汇报执行的结果和死亡的原因,又因为已无法被调度,因此进程只能以一种被动的姿态躺倒,等待其创建者(父进程)前来获取其执行结果和死亡原因。

通过下列程序可查看僵尸进程:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>int main(int argc,char *argv[])
{pid_t pid=fork();if (pid==0){printf("子进程\n");//子进程退出变僵尸return 0;}else{//父进程不退出pause();}return 0;
}

结果:

使用命令:ps ajx        查看进程状态

3、释放僵尸态

  •  父进程直接退出
  • 子进程等待父进程对其执行wait()/waitpid()

        释放对应僵尸子进程的系统资源

        获取对应僵尸子进程的退出状态

        阻塞父进程(可选)

示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>int main(int argc,char *argv[])
{pid_t pid=fork();if (pid==0){printf("子进程\n");return 0;}else{wait(NULL);           //父进程调用wait()释放子进程资源     pause();exit(0);}return 0;
}


http://www.ppmy.cn/embedded/100601.html

相关文章

sql盲注python脚本学习 (基于bWAPP靶场)

全局部分 # 数组转字符串 from shlex import join # 请求 import requests # 记时 import timer requests.session() 登录 def login():login_url http://127.0.0.1:1234/login.phpparams dict(loginbee,passwordbug,security_level0,formsubmit)res r.post(login_url,…

Pod基础使用

POD基本操作 1.Pod生命周期 在Kubernetes中&#xff0c;Pod的生命周期经历了几个重要的阶段。下面是Pod生命周期的详细介绍&#xff1a; Pending&#xff08;待处理&#xff09;: 调度: Pod被创建后&#xff0c;首先进入“Pending”状态。此时&#xff0c;Kubernetes的调度器…

Vue2的16种传参通信方式

前言 先直入主题列出有哪些传参方式&#xff0c;下面再通过事例一一讲解。 props(父传子) $emit与 v-on (子传父) EventBus (兄弟传参) .sync与 update: (父子双向) v-model (父子双向) ref $children与 $parent $attrs与 $listeners (爷孙双向) provide与 inject (多层传参) …

【ORACLE】 ORA-01691: Lob 段无法通过 8192 (在表空间 XXX_SPACE 中) 扩展

ORA-01691错误通常表示Oracle数据库在尝试扩展LOB段时无法为表空间分配更多的空间。这个问题通常由表空间容量不足引起。根据搜索结果&#xff0c;以下是几种可能的解决方案&#xff1a; 检查并扩大表空间&#xff1a;首先&#xff0c;确认表空间是否已经达到其最大容量。可以使…

JS 和 ES6 补充学习

1、JS对象-自定义对象 let 对象名 {属性名1&#xff1a;属性值1&#xff0c;属性名2&#xff1a;属性值2&#xff0c;属性名3&#xff1a;属性值3&#xff0c;函数名称&#xff1a;function&#xff08;形参列表&#xff09;{}&#xff0c;函数名称&#xff08;形参列表&…

Docker 存储空间不足无法导入加载镜像

问题&#xff1a;在载入镜像时&#xff0c;发现docker没有空间了 解决办法&#xff1a; 更改docker的存储路径 1.添加新的硬盘 docker info #查看docker的存储位置 df -Th #查看占用以及挂载情况 发现没有可用的剩余空间&#xff0c;我们可以添加一个新的硬盘 在linu…

逻辑判断2-论证类(非归因论证)

目录 一、数量论证1.比例类论证2.抽样类论证3.盐水类论证4.其他数学模型二、严谨逻辑关系1.一般质疑2.支持与前提假设三、一般质疑1.无论据有结论2.有论据有结论四、支持、前提、解释1.支持方式2.前提假设3.解释说明一、数量论证 1.比例类论证 题目特征:题干的错误逻辑是用“…

MySQL系统性的学习--基础

学习资料是黑马的mysql课程 Mysql概述 相关概念 数据模型 关系型数据库 数据模型 SQL SQL通用语法 SQL分类 DDL 数据库操作 表操作 查询 创建 数据类型 修改/删除 DML 添加数据INSERT 修改数据UPDATE 删除数据DELETE DQL 基础查询 条件查询 聚合函数 分组查询 排序查询 分…