首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

详解僵尸进程与孤儿进程

什么是僵尸进程与孤儿进程 在 linux 系统中,进程都是由父进程创建的,当父进程执行 fork 系统调用完成子进程创建后,子进程和父进程就独立存在了,但两者又有着密切的关系,按照标准的流程,父进程要在子进程完成执行后...但这个过程存在两个问题,那就是如果父进程先于子进程退出了怎么办?以及子进程退出以后,父进程始终没有调用 wait 或 waitpid 怎么办?这就产生了两种进程:孤儿进程与僵尸进程。...3.1 孤儿进程 既然所有进程都是父进程创建的,那就会发生无限回溯的问题,所以必须要有一个最初的进程,来担任所有进程的祖先,这个进程就是 init 进程。...4.3 杀死父进程 由于父进程死后,子进程以及僵死进程会成为孤儿进程,从而会被过继给 init 进程,init 进程就会负责清理僵死进程。...4.4 fork 两次 在建立子进程时,使用 2 次 fork,让所建立的子进程成为父进程的孙子进程,而实际中的子进程则随即推出,和第三条相同,由于孙子进程的父进程已经退出,所以在孙子进程会被自动过继给守护进程

1.8K20

进程伪装详解

就不能够正常运行,所以我们如果想到实现进程伪装,最好的选择就是伪装成系统必备的exe,当我们进行进程伪装之后,在系统中显示的就会是系统进程的信息,但这个程序还是能够执行它正常的功能,这样就达到了进程伪装...思路 我们判断一个进程是否被劫持,一般是看他的进程名以及path,即启动路径来判断,那么反推即可得到,我们可以通过修改进程模块中的进程路径以及进程名来实现进程伪装的作用 [image-20211021155051258....png] 比如我们这里再看看explorer的进程名和启动路径 [image-20211021155109215.png] 那么这里我们改人如何获取进程的这些信息呢,这里可以使用到ntdll.dll里面的...PEB,即Process Envirorment Block Structure,英文翻译过来就是进程环境信息块,这里包含了写进程的信息。...Reserved7[1]; ULONG SessionId; } PEB, *PPEB; 这里就不深究每个属性的含义了,这里拿到PEB结构之后我们就能够对进程的一些属性进行修改就能够实现进程伪装的效果

1.9K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Linux】详解进程终止&&进程等待

    二、进程终止 main函数的返回值我们叫做进程的退出码。一般0表示进程执行成功,非0表示进程执行失败。可以用非0的数字表示进程失败的原因。...2.2、进程退出的场景 进程提出的场景与三种: 1、进程代码执行完了,结果是正确的。 2、进程代码执行完了,结果不正确。 3、进程代码没有执行完,进程出异常了。...三、进程等待 3.1、进程等待的必要性 1、之前讲过,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。...fork之后父子进程谁先运行不确定,但fork之后一定是父进程后退出,因为父进程要回收子进程。...3.2.3、wstatus参数详解     *wstatus表示一个int整形变量,由三十二个比特位组成,其中前16个比特位我们不用,第17到第24个比特位用来表示进程退出时的退出码,第26到第32个比特位用来表示进程退出时收到的退出信号

    24810

    守护进程详解

    在一个多任务的电脑操作系统中,守护进程(英语:daemon,/ˈdiːmən/或/ˈdeɪmən/)是一种在后台执行的电脑程序。此类程序会被以进程的形式初始化。...守护进程程序的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志的守护进程。 通常,守护进程没有任何存在的父进程(即PPID=1),且在UNIX系统进程层级中直接位于init之下。...守护进程程序通常通过如下方法使自己成为守护进程:对一个子进程运行fork,然后使其父进程立即终止,使得这个子进程能在init下运行。这种方法通常被称为“脱壳”。 系统通常在启动时一同引导守护进程。...守护进程为对网络请求,硬件活动等进行响应,或其他通过某些任务对其他应用程序的请求进行回应提供支持。...而作为Unix-like的Mac OS X有守护进程。(在Mac OS X中也有“服务”,但他们与Windows中类似的程序在概念上完全不相同。)

    86921

    Linux进程详解

    进程描述符的state字段用于保存进程的当前状态, 进程的状态有以下几种: TASK_RUNNING (运行) – 进程处于可执行状态, 在这个状态下的进程要么正在被CPU执行, 要么在等待执行(CPU...TASK_TRACED (被追踪) – 进程处于被追踪状态, 例如通过ptrace命令对进程进行调试. TASK_STOPPED (停止) – 进程处于停止状态, 进程不能被执行....进程的创建 在Linux系统中,进程的创建使用fork()系统调用,fork()调用会创建一个与父进程一样的子进程,唯一不同就是fork()的返回值,父进程返回的是子进程进程ID,而子进程返回的是0。...Linux创建子进程时使用了写时复制(Copy On Write),也就是创建子进程时使用的是父进程的内存空间,当子进程或者父进程修改数据时才会复制相应的内存页。..., 而创建进程是通过传入 CLONE_VM 标志来指定进程借用其他进程的虚拟内存空间结构

    4K10

    进程伪装详解

    就不能够正常运行,所以我们如果想到实现进程伪装,最好的选择就是伪装成系统必备的exe,当我们进行进程伪装之后,在系统中显示的就会是系统进程的信息,但这个程序还是能够执行它正常的功能,这样就达到了进程伪装...思路 我们判断一个进程是否被劫持,一般是看他的进程名以及path,即启动路径来判断,那么反推即可得到,我们可以通过修改进程模块中的进程路径以及进程名来实现进程伪装的作用 比如我们这里再看看explorer...的进程名和启动路径 那么这里我们改人如何获取进程的这些信息呢,这里可以使用到ntdll.dll里面的NtQueryInformationProcess来获取进程的PEB地址,这里稍微提一个概念,什么是...PEB,即Process Envirorment Block Structure,英文翻译过来就是进程环境信息块,这里包含了写进程的信息。...Reserved7[]; ULONG SessionId; } PEB, *PPEB; 这里就不深究每个属性的含义了,这里拿到PEB结构之后我们就能够对进程的一些属性进行修改就能够实现进程伪装的效果

    66100

    Linux:进程概念(二.查看进程、父进程与子进程进程状态详解

    2.父进程与子进程 2.1介绍 在操作系统中,当一个进程(称为父进程)创建另一个新进程(称为子进程)时,父子进程之间建立了一种特殊的关系。...这种关系具有以下特点和行为: 父子关系: 子进程的父进程是创建它的进程,即父进程。 每个进程都有唯一的父进程。...PID关系: 子进程的PID(进程标识符)是由父进程调用fork()或类似系统调用创建的。 子进程的PPID(父进程标识符)与创建它的父进程的PID相同。...几乎所有进程都是由其他进程创建的,因为通常情况下,操作系统启动时会先创建一个初始进程(通常是init进程或systemd),然后其他进程都是由这些初始进程创建的。...下面是对这两个返回值的解释: 给父进程返回子进程的 PID:在父进程中,fork 返回新创建子进程进程 ID(PID),这个 PID 是子进程的标识符,父进程通过这个 PID 可以识别并操作子进程

    1.1K10

    windows进程详解3

    是否为系统进程: 是 absr.exe进程文件: absr or absr.exe进程名称: Backdoor.Autoupder Virus描述: 这个进程是Backdoor.Autoupder后门病毒程序创建的...是否为系统进程: 否 acrobat.exe进程文件: acrobat or acrobat.exe进程名称: Adobe Acrobat描述: Acrobat Writer用于创建PDF文档。...是否为系统进程: 否 acrord32.exe进程文件: acrord32 or acrord32.exe进程名称: Acrobat Reader描述: Acrobat Reader是一个用于阅读PDF...是否为系统进程: 否 aim.exe进程文件: aim or aim.exe进程名称: AOL Instant Messenger描述: AOL Instant Messenger是一个在线聊天和即时通讯...是否为系统进程: 否 cmd.exe 进程文件: cmd or cmd.exe 进程名称: Windows Command Prompt 描述: Windows控制台程序。

    90020

    进程间通信详解

    进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。...它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。 它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write等函数。...,这样父子进程共享一个管道,一端连着主进程,一端连着子进程 sub_proc = Process(target=sub_process, args=(out_pipe, in_pipe))...in_pipe.send(i) # 如果不关闭主进程的输入端,则子进程会一直等待 in_pipe.close() # 等待子进程结束 sub_proc.join()...信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。 1、特征 信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。

    41220

    【Linux】Linux进程控制——进程创建、进程终止及进程等待详解

    进程创建 fork函数初识 在Linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。...将父进程部分数据结构内容拷贝至子进程 添加子进程到系统进程列表当中 fork返回,开始调度器调度 当一个进程调用 fork 之后,就有两个二进制代码相同的进程。...适用于读写少的场景:在数据被频繁读取而写操作相对较少的场景下,写时拷贝技术能够显著提升系统性能。 fork常规用法 一个父进程希望复制自己,使父子进程同时执行不同的代码段。...⭐进程等待 进程等待的必要性 在Linux进程提到过,子进程退出,父进程如果不管不顾,不读取子进程的退出信息,就可能造成“僵尸进程”的问题,进而造成内存泄漏。...如,子进程运行完成,结果对还是不对, 或者是否正常退出。 父进程通过进程等待的方式,回收子进程资源,获取子进程退出信息。

    9810

    GPU,具有Tensorflow的多进程

    需要与要启动的进程一样的内核(有时内核可以处理多个“线程”,因此这是最后关注的数字)。 将使用AWS的实例p3.8xlarge,提供32个vCores和4个V100显卡。...这个包允许启动进程并创建管道以与它们通信。以下是架构的拓扑: ? 多处理图 有32个工作进程和1个主进程。...工作进程只是在玩游戏来收集数据并将其发送到主进程,主进程将训练这些数据并将新网络保存在文件中。然后,工作人员收到加载新网络,加载并再次播放N个游戏的消息。...因此,需要从主进程启动32个进程,并在主进程和每个进程(即32个管道)之间创建一个管道。还需要在主进程内创建线程以异步侦听管道。...对于GPU分配,有32个进程,4个GPU,每个16GB内存。增加每个进程的内存可以提高运行模型的进程速度。

    2.2K20

    MySQL 实例详解

    一、基本概念 1、MySQL实例 就是在一台机器上面开启多个不同 的端口,运行多个MySQL服务进程。这些MySQL实例公用一套安装程序,使用不同的(也可以是相同的)配置文件,启动程序,数据文件。...已经为双主复制的mysql数据库服务器架构,想部分重要业务的数据一份异地机房的热备份,而mysql复制暂不支持主的复制模式,且不给用户提供服 务,为有效控制成本,会考虑异地机房部署一台性能超好的物理服务器...,甚至外加磁盘柜的方式,为此也会部署实例; 5....2、资源互相争抢问题,比如 内存 ,cpu 需要开启 numa,并把 mysql 绑定到固定的核心上,网卡的中断请求,资源争用,最重要的是磁盘 IO MySQL实例配置方法 1、单一配置文件 2、配置文件...与一些安全措施 8、关闭MySQL 9,、提供简易管理脚本 10、为mysql的root用户创建密码 11、附,配置文件安装mysql实例,这里增加mysql 的3309端口 12、总结 1、同步时间

    2.1K140

    Linux进程信号详解【下】

    Linux进程信号详【下】 核心转储   在进程等待这一章节,有一张图我没有详细解释:   当时在 进程等待 这一章节里我们并没有详细说明 Core dump标志,而我们通过man手册查看signal...而在 centos 下文件名为 core.pid 后面跟一串数字,这串数字是报错进程进程pid。   ...而操作系统中存在许多进程,而每个进程都有自己的代码和数据,所以每个进程都拥有自己的用户级页表。而操作系统对进程来说只有一份,所以 操作系统中内核级页表也只有一个。...SIGCHLD信号   我们在学习进程的时候曾经说过,僵尸进程出现的原因是父进程没有回收子进程,实际上 子进程在终止时会发送 SIGCHLD 信号给父进程,而该 信号的默认处理动作是忽略,父进程可以对该信号进行自定义捕捉...把子进程回收改为如上图所示,就解决了所有问题,无论是100个子进程退出,还是100个只有50个子进程退出,这样就都可正常将子进程回收了。   文章到此结束,如果这篇文章对您有帮助的话还望三连~~

    7410

    Linux 多进程编程详解

    Linux 多进程编程详解进程编程是现代操作系统中一种重要的并发编程技术。通过在同一程序中运行多个独立的进程,可以实现并发处理,充分利用多核处理器的优势,提高程序的运行效率。...进程之间通过进程间通信(IPC)机制进行通信和同步。多进程编程就是在同一程序中创建并运行多个进程,以实现并发处理。...1.2 进程控制块(PCB) 进程控制块(PCB,Process Control Block)是操作系统管理进程的主要数据结构,包含了进程的各种信息,包括: 进程标识符(PID):每个进程都有一个唯一的标识符...fork()会创建一个子进程,该子进程是父进程的副本,继承了父进程的所有资源和上下文。子进程有自己独立的地址空间,父子进程可以并发运行。...父进程和子进程分别打印各自的PID和相关信息,并通过waitpid()等待子进程结束。 2.2 进程的终止 进程在完成任务后会终止,终止进程可以通过exit()系统调用实现。

    16410

    Zabbix通过进程名监控进程状态配置详解

    Zabbix通过进程名监控进程状态配置详解 有时候我们只能通过进程名监控一个进程是否停掉了,因为有的进程并没有对外提供端口号,以下记录了下详细步骤,通过这个示例会学到很多zabbix核心配置相关的东西。...可以到这里找到: http://www.ttlsa.com/zabbix/zabbix-agent-types-and-all-keys/ 在这里我们需要的是proc.num这个key,以下是对此key的详解...: 可以看到此监控项的返回值是进程数量,其中cmdline参数可以是进程名字包含的关键字,在这里我的进程的关键字是logstash,因此按如下方式创建监控logstash进程的监控项,表示机器所有用户所有状态的...3.配置动作发送短信和邮件报警: 以下是短信配置方式,邮件配置类似,其中应用集是自己创建的,主要用来分类,具体的自行研究: 参考文章: zabbix item key详解 zabbix...agent 类型所有key zabbix触发器表达式详解 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140545.html原文链接:https://javaforall.cn

    2.6K30

    Binder进程间通信详解

    今天,讲下自己如何学习binder进程间通信的机制的一些见解。开始的时候,只知道 Binder 是个很底层的东西,甚至对于具体是什么用都不是很清楚。...想下如果两个进程需要相互通信,需要做什么? 假设其中一个进程是客户端进程,另一个是服务端进程,这里约定简称客户端与服务端。 1.客户端需要知道哪一个是他要调用的服务端的方法。...这是因为 Android 系统可通过它将对象分解成可编组到各进程的原语。 第三个问题,封装一个类来具体的实现,他的名字叫Binder,然后这个binder的话,需要服务端来继承。 ?...正所谓,前人栽树,后人乘凉,参考 彻底理解Android Binder通信架构 此文,切入点是startService开始的,具体分析的是客户端进程调用服务端进程的过程。...后续分析== 参考资料 简单明了,彻底地理解Binder 彻底理解Android Binder通信架构 一篇文章了解相见恨晚的 Android Binder 进程间通讯机制

    1.3K40
    领券