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

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

ps 是一个常用的 Unix/Linux 命令,用于显示当前系统中运行的进程信息。...在 Linux 中,每个进程都属于一个或多个组,getgid() 函数返回调用进程的有效组 ID。...1.4通过 /proc 系统文件夹看进程Linux系统中,/proc文件系统提供了关于运行中进程的详细信息。你可以通过查看/proc文件系统中的特定目录和文件来获取有关进程的信息。...在Unix/Linux系统中,可以使用 getpid() 系统调用来获取当前进程的PID,使用 getppid() 系统调用来获取当前进程进程的PID。...3.3Linux中状态初步认识 一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)进程的状态通常由几个不同的状态标识符表示。

1.4K10

探索进程和子进程

getppid()获取进程的PID。...进程、子进程 这个进程PID到底是什么?...先来认识一下fork函数: fork函数会以调用该函数的进程作为进程创建一个子进程 创建成功时,会在进程中返回子进程的PID,在子进程中返回0;如果失败,在进程中返回-1,没有子进程创建。...一个进程可以创建多个子进程,为了区分这些子进程,fork函数在创建子进程后,会给进程返回子进程的pid。子进程只需调用getppid()函数即可找到进程。...子进程可以把进程的数据全被拷贝一份,但是大部分数据对于子进程来说可能都是没用的,这就造成了浪费,所以操作系统只是把进程中数据层面的代码临时拷贝一份给子进程,即子进程创建后,会共享进程的代码和数据,

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

    进程欺骗实践

    文章前言 监控进程和子进程之间的关系是威胁检测团队检测恶意活动的常用技术,例如,如果powershell是子进程,而Microsoft Word是进程,这是一种折中的行为,各种EDR可以很容易地检测到这种异常活动...,这时红队可以考虑使用进程PID欺骗作为逃避方法,Windows API调用"CreateProcess"允许用户传入一个用于分配PID的参数,它可以用于指定当前进程进程。...项目介绍 https://github.com/Al1ex/SelectMyParent image.png 进程欺骗 Step 1:选择进程并确定其PID image.png Step 2:之后执行以下命令进行进程欺骗...SelectMyParent.exe notepad 928 image.png Step 3:使用process Explor查看进程树,可以看到成功欺骗 image.png 参考链接 https

    1.4K20

    Linux进程为何要苦苦地知道子进程的死亡原因?

    白发人送黑发人 一个普遍的常识是,在Linux里面总是“白发人送黑发人”,子进程死亡,进程透过wait()等待子进程死亡,并清理子进程僵尸,当然进程也可以因此而获得子进程的死亡原因。.../a.out child process id: 3320 然后用信号2去杀死这个子进程3320: kill -2 3320 进程waitpid()返回,然后status里面获知原因,进程打印:...则进程探测到子进程死亡后,可打印它的退出状态: $ ....在wait_task_zombie()中,进程会透过子进程的僵尸分析获得子进程的exit_code组合,并进一步拼装status。 事出必有因 那么,进程为什么必须知道子进程的死亡呢?...所以,这个过程应该由Linux的某种机制自动完成,比如如果init知道了httpd死亡的话,它可以内在地自动重新启动一个httpd进程

    2.1K20

    Linux 上使用 jps 命令检查 Java 进程

    image.png 系统上运行着诸多进程,通过 jps 命令能够快速有效识别 Java 进程。 在 Linux 中,有一些用于查看系统上运行进程的命令。进程是指由内核管理的正在进行的事件。...每启动一个应用程序时,就会产生一个进程,但也有许多在计算机后台运行的进程,如保持系统时间准确的进程、监听新文件系统的进程、索引化文件的进程等。...有一些可以用来监测这些进程的实用程序,比如包含在 procps-ng 包 中的程序,但它们往往都是对各种进程通用的。它们会查看计算机上的所有进程,你可以根据需要过滤结果列表。...在 Linux 中,可以通过 ps 命令查看进程。这是查看当前系统上运行进程最简单的方法。...尽管如此,它仍然是一个不错的选择,因为一个系统通常运行着许多进程,这种只识别 Java 进程的快速方法是很有用的。

    2.8K20

    Linux 上使用 jps 命令检查 Java 进程

    Linux 中,有一些用于查看系统上运行进程的命令。进程是指由内核管理的正在进行的事件。...每启动一个应用程序时,就会产生一个进程,但也有许多在计算机后台运行的进程,如保持系统时间准确的进程、监听新文件系统的进程、索引化文件的进程等。...有一些可以用来监测这些进程的实用程序,比如包含在 procps-ng 包 中的程序,但它们往往都是对各种进程通用的。它们会查看计算机上的所有进程,你可以根据需要过滤结果列表。...在 Linux 中,可以通过 ps 命令查看进程。这是查看当前系统上运行进程最简单的方法。...尽管如此,它仍然是一个不错的选择,因为一个系统通常运行着许多进程,这种只识别 Java 进程的快速方法是很有用的。

    2.6K30

    进程退出时如何确保子进程退出?

    前言 子进程退出的时候,进程能够收到子进程退出的信号,便于管理,但是有时候又需要在进程退出的时候,子进程也退出,该怎么办呢? 进程退出时,子进程会如何?...17433的进程id是17432,但是在10秒后,它的进程变成了1658。...另外还可以观察到,该进程也是其他系统进程进程。 如何确保进程退出的同时,子进程也退出? 既然如此,如何确保进程退出的同时,子进程也退出呢?...This value is cleared for the child of a fork(2) and (since Linux 2.4.36 / 2.6.23) when...练习 尝试将上面的代码在非图形界面的linux操作系统中运行,看看最终被收养的是否为init进程。 交流 虽然本文方法可行,但并不适用于所有操作系统,你有什么更好的办法解决上面的问题?

    12.2K21

    8.7 进程检测反调试

    首先这是一种比较奇特的反调试思路,通过检测自身进程来判定是否被调试,原理非常简单,我们的系统在运行程序的时候,绝大多数应用程序都是由Explorer.exe这个进程派生而来的子进程,也就是说如果没有被调试其得到的进程就是...Explorer.exe的进程PID,而如果被调试则该进程进程PID就会变成调试器的PID值,通过对进程的检测即可实现检测是否被调试的功能。...PROCESSENTRY32); Process32First(hProcessSnap, &pe32); do { // 先判断是不是我们自己进程的...PID if (ProcessId == pe32.th32ProcessID) { // 判断进程是否是 Explorer.exe...} return FALSE;}int main(int argc, char * argv[]){ if (IsDebug()) { printf("[-] 进程正在被调试

    25830

    8.7 进程检测反调试

    首先这是一种比较奇特的反调试思路,通过检测自身进程来判定是否被调试,原理非常简单,我们的系统在运行程序的时候,绝大多数应用程序都是由Explorer.exe这个进程派生而来的子进程,也就是说如果没有被调试其得到的进程就是...Explorer.exe的进程PID,而如果被调试则该进程进程PID就会变成调试器的PID值,通过对进程的检测即可实现检测是否被调试的功能。...PROCESSENTRY32); Process32First(hProcessSnap, &pe32); do { // 先判断是不是我们自己进程的...PID if (ProcessId == pe32.th32ProcessID) { // 判断进程是否是 Explorer.exe...return FALSE; } int main(int argc, char * argv[]) { if (IsDebug()) { printf("[-] 进程正在被调试

    20920

    关于进程和子进程的关系(UAC 绕过思路)

    假设是a进程创建了b进程,那么a进程就是b进程进程。...,假设我们利用一下该API,我们就能够将自己的进程的的进程设置为随意进程(要提权绕过UAC的鸽子注意了),假设把木马进程进程设置为 杀软 的ID或者csrss.exe ,notepad.exe 等可信进程...,那么对于根据进程可疑(进程链)来查杀的杀软就轻易绕过了,这里顺便提示下还有一个绕过反调试的小技巧,假设你发现一个该死的小程序检查进程是不是explorer.exe来推断是否是合法环境。...假设你调试的程序检測进程,直接用以上的办法启动它,当然进程就是他检測同意的进程喽, 这里启动时要注意的是设置CREATE_SUSPEND 就是创建挂起,然后在创建后使用ResumeThread恢复就能够顺利调试了...所以说进程进程不一定是进程的创建者,所以那一群依据进程来看进程是否可信的杀软就呵呵了。 可是这里说下 360 这个绕只是,原因是啥哪? 记得我开篇时说过道高一尺,魔高一丈吗?

    1.6K30

    Linux进程——Linux进程进程优先级

    如果对前面Linux进程不太熟悉可以先阅读: Linux进程 本篇主要内容: 僵尸进程和孤儿进程 Linux进程优先级 1. 僵尸进程 僵尸进程就是处于僵尸状态下的进程!...当进程退出并且进程(使用wait()系统调用,后面讲) 没有读取到子进程退出的返回代码时就会产生僵死(尸)进程 僵死进程会以终止状态保持在进程表中,并且会一直在等待进程读取退出状态代码。...所以,只要子进程退出,进程还在运行,但进程没有读取子进程状态,子进程进入Z状态 僵尸状态就是Linux状态中的X死亡状态!...NI :NICE值,表示优先级的修改数据 NICE其取值范围是-20至19,一共40个级别 Linux进程的优先级数值范围:60~99 Linux中默认进程的优先级都是:80 Linux是支持动态优先级调整的...总结 本篇文章前部分紧贴上篇Linux进程,分析完了Linux下常见的进程状态,然后初步了解了Linux进程优先级,而进程优先级与前面内容相差较大,希望大家能够多花点时间理解!

    10210

    LinuxLinux进程控制>进程创建&&进程终止&&进程等待&&进程程序替换

    1.进程创建 1.1 fork函数 在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。...新进程为子进程,而原进程进程 #include pid_t fork(void); 返回值:自进程中返回0,进程返回子进程id,出错返回-1 进程调用fork,当控制转移到内核中的...具体见下图: 1.3 fork常规用法 一个进程希望复制自己,使父子进程同时执行不同的代码段。例如,进程等待客户端请求,生成子进程来处理请求 一个进程要执行一个不同的程序。...,进程通过wait来获取该值 说明:虽然status是int,但是仅有低8位可以被进程所用。...最后,进程派给子进程的任务完成的如何,我们需要知道。

    15310

    php 多进程编程进程的阻塞与非阻塞实例分析

    本文实例讲述了php 多进程编程进程的阻塞与非阻塞。分享给大家供大家参考,具体如下: php中进程的阻塞,主要是进程等待子进程退出。 1.php代码如下: <?...pcntl_wait($status); } else { //这里是子进程空间 echo "进程ID: ", posix_getppid(), " 进程ID : ", posix_getpid...echo "进程ID: ", posix_getppid(), " 进程ID : ", posix_getpid(), " {$i} \r\n"; //我们让子进程等待3秒,再退出...status, WNOHANG); } else { //这里是子进程空间 echo "进程ID: ", posix_getppid(), " 进程ID : ", posix_getpid...代码3.php与2.php效果一样,pcntl_wait()函数的作用只是用来让进程等待子进程退出,默认情况下会阻塞主进程

    89341

    Linux进程控制——Linux进程终止

    前言:前面了解完前面的Linux进程基础概念后,我们算是解决了Linux进程中的一大麻烦,现在我们准备更深入的了解Linux进程——Linux进程控制!...我们主要介绍的Linux进程控制内容包括:进程终止,进程等待与替换,进程程序替换! 本篇主要内容: 重识进程创建 进程退出场景 错误码和退出码 1....重识进程创建 1.1 fork函数 在我们之前提到过,创建进程使用的是fork函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程进程。...内核做: 分配新的内存块和内核数据结构给子进程进程部分数据结构内容拷贝至子进程 添加子进程到系统进程列表当中 fork返回,开始调度器调度 fork函数返回值: 子进程返回0, 进程返回的是子进程的...在多进程环境中,我们创建子进程的目的就是协助进程办事,但是进程怎么知道子进程把事情办得怎么样?所以进程要知道子进程办的怎么样,就有了退出码,而main函数的返回值,就是进程的退出码!

    10910

    Linux进程控制——Linux进程等待

    前言:接着前面进程终止,话不多说我们进入Linux进程等待的学习,如果你还不了解进程终止建议先了解: Linux进程终止 本篇主要内容: 什么是进程等待 为什么要进行进程等待 如何进程等待...进程等待的概念: 我们通常说的进程等待其实是通过wait/waitpid的方式,让进程(一般)对子进程进行资源回收的等待过程,进程必须等待这个子进程结束后,处理它的代码和数据! 2....进程创建子进程的目的是为了让子进程协助自己完成任务的,而进程需要知道子进程将任务完成得如何。这就需要通过进程等待的方式,获取子进程的退出信息。 3....总结拓展 拓展一:进程如何得知子进程的退出信息 进程调用wait()/waitpid()来获取子进程的退出信息,调用的接口就传入了一个status参数,而进程中存在着一个statusp的指针...这个就是因为进程具有独立性,进程无法直接获得子进程的退出信息 总结: 进程等待确实非常有用,它既可以回收僵尸进程,避免造成内存泄漏,也能让进程能够获取到子进程的退出信息,进程等待我们就先了解这么多

    10810
    领券