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

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

ps 是一个常用 Unix/Linux 命令,用于显示当前系统中运行进程信息。...在 Linux 中,每个进程都属于一个或多个组,getgid() 函数返回调用进程有效组 ID。...这种关系具有以下特点和行为: 父子关系: 子进程进程是创建它进程,即进程。 每个进程都有唯一进程。...在Unix/Linux系统中,可以使用 getpid() 系统调用来获取当前进程PID,使用 getppid() 系统调用来获取当前进程进程PID。...3.3Linux中状态初步认识 一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)进程状态通常由几个不同状态标识符表示。

1.2K10

探索进程和子进程

: 通过getpid()得到PID和ps指令获取进程PID是一致,都是5258 一个进程属性中,除了有自己进程PID还有进程PID,ps指令中查询PPID是当前进程进程PID,可以是用函数...先来认识一下fork函数: fork函数会以调用该函数进程作为进程创建一个子进程 创建成功时,会在进程中返回子进程PID,在子进程中返回0;如果失败,在进程中返回-1,没有子进程创建。...一个进程可以创建多个子进程,为了区分这些子进程,fork函数在创建子进程后,会给进程返回子进程pid。子进程只需调用getppid()函数即可找到进程。...**为什么说子进程进程代码和数据是共享?**刚刚谈到,子进程创建了属于自己PCB对象,但是没有代码和数据,因此它只能使用进程代码和数据,也就是说父子进程代码和数据是共享。...子进程可以把进程数据全被拷贝一份,但是大部分数据对于子进程来说可能都是没用,这就造成了浪费,所以操作系统只是把进程中数据层面的代码临时拷贝一份给子进程,即子进程创建后,会共享进程代码和数据,

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

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

    白发人送黑发人 一个普遍常识是,在Linux里面总是“白发人送黑发人”,子进程死亡,进程透过wait()等待子进程死亡,并清理子进程僵尸,当然进程也可以因此而获得子进程死亡原因。...则进程探测到子进程死亡后,可打印它退出状态: $ ....事出必有因 那么,进程为什么必须知道子进程死亡呢?进程为什么一定要苦苦地知道子进程死亡原因?...所以,这个过程应该由Linux某种机制自动完成,比如如果init知道了httpd死亡的话,它可以内在地自动重新启动一个httpd进程。...当场开始这个服务: $ sudo systemctl start simple-server 接下来我们查询下状态,发现是active: ?

    2K20

    进程欺骗实践

    文章前言 监控进程和子进程之间关系是威胁检测团队检测恶意活动常用技术,例如,如果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

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

    前言 子进程退出时候,进程能够收到子进程退出信号,便于管理,但是有时候又需要在进程退出时候,子进程也退出,该怎么办呢? 进程退出时,子进程会如何?...17433进程id是17432,但是在10秒后,它进程变成了1658。...另外还可以观察到,该进程也是其他系统进程进程。 如何确保进程退出同时,子进程也退出? 既然如此,如何确保进程退出同时,子进程也退出呢?...内容很多,主要意思为:设置一个信号,当进程退出时候,子进程将会收到该信号。 那么根据这个,我们完全可以在进程退出时,也给子进程一个退出信号。...练习 尝试将上面的代码在非图形界面的linux操作系统中运行,看看最终被收养是否为init进程。 交流 虽然本文方法可行,但并不适用于所有操作系统,你有什么更好办法解决上面的问题?

    12K21

    Fork进程后,是否与进程共享stdio?

    今天想到一个问题:如果我在代码里面,fork当前进程,然后两个进程都执行scanf(),那会发生什么?键盘输入数据是定向到哪个进程呢?...scanf("%c\n", &c); printf("parent process: %c\n", c); } } } 根据上面这串代码,进程和子进程都会调用...scanf,并打印自己读取到数据。...process: 4 child process: 5 parent process: 5 parent process: 6 child process: 6 child process: 可以看到,进程和子进程都读取了键盘数据...具体是哪一个进程获取到数据,则与进程调度有关。这提醒了我一点:多个进程同时读取同一个stdin的话,会造成获取到数据不完整问题。(这与stdin默认为tty这样字节设备特性有关)

    15920

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

    假设是a进程创建了b进程,那么a进程就是b进程进程。...IceSworld,Process Explorer等) 查看时,会发现提权进程进程是创建它进程,这是由于AIS利用了CreateProcessAsUser() API中一个新功能,这里新功能就是将提权进程进程设置成创建该进程进程...,假设我们利用一下该API,我们就能够将自己进程进程设置为随意进程(要提权绕过UAC鸽子注意了),假设把木马进程进程设置为 杀软 ID或者csrss.exe ,notepad.exe 等可信进程...假设你调试程序检測进程,直接用以上办法启动它,当然进程就是他检測同意进程喽, 这里启动时要注意是设置CREATE_SUSPEND 就是创建挂起,然后在创建后使用ResumeThread恢复就能够顺利调试了...所以说进程进程不一定是进程创建者,所以那一群依据进程来看进程是否可信杀软就呵呵了。 可是这里说下 360 这个绕只是,原因是啥哪? 记得我开篇时说过道高一尺,魔高一丈吗?

    1.6K30

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

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

    13710

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

    如果对前面Linux进程不太熟悉可以先阅读: Linux进程 本篇主要内容: 僵尸进程和孤儿进程 Linux进程优先级 1. 僵尸进程 僵尸进程就是处于僵尸状态下进程!...所以,只要子进程退出,进程还在运行,但进程没有读取子进程状态,子进程进入Z状态 僵尸状态就是Linux状态中X死亡状态!...,当子进程退出,进程没有回收退出信息时,子进程会进入僵尸状态 1.4 僵尸进程危害 僵尸进程危害 进程退出状态必须被维持下去,因为他要告诉关心它进程进程),你交给我任务,我办怎么样了...NI :NICE值,表示优先级修改数据 NICE其取值范围是-20至19,一共40个级别 Linux进程优先级数值范围:60~99 Linux中默认进程优先级都是:80 Linux是支持动态优先级调整...总结 本篇文章前部分紧贴上篇Linux进程,分析完了Linux下常见进程状态,然后初步了解了Linux进程优先级,而进程优先级与前面内容相差较大,希望大家能够多花点时间理解!

    9210

    Linux进程——Linux下常见进程状态

    本篇主要内容: 操作系统中进程状态 Linux进程状态 在开始之前,我们先来简单了解以下进程状态 进程本质就是PCB中一个变量!!! 所谓状态变化,本质就是修改整形变量!!!...Linux进程状态 下面是一段库中找状态定义: static const char * const task_state_array[] = { "R (running)", /* 0 */ "..."T (stopped)", /* 4 */ "t (tracing stop)", /* 8 */ "X (dead)", /* 16 */ "Z (zombie)", /* 32 */ }; Linux...此时,恰好系统内内存资源已经严重不足了,系统压力太大,Linux在是在没办法时候,会通过杀掉进程,节省资源,来不及进程反应直接被系统 “干掉” 。...总结 在了解Linux进程分类时,我们通常是先了解操作系统进程,因为二者有一定联系,了解操作系统能更好理解进程在操作系统中运行关系。进程状态在进程中也极为重要,希望大家能理解透彻!

    12610

    linux下如何查询进程资源占用?

    linux下有时需要查询某个文件被哪些进程调用,或者某个进程打开了哪些文件,今天介绍两个命令。...另外fuser还可以直接发送信号给进程,可以查看下fuser支持信号 ? 比如直接关闭占用tail命令进程 ?...0 2 lsof 列出当前系统打开文件 在linux环境下,任何事物都以文件形式存在,通过文件不仅可以访问常规数据,还可以访问网络连接和硬件。...解释一下输出每列意义: COMMAND:进程名称 PID:进程标识符 USER:进程所有者 FD:文件描述符,应用程序通过文件描述符识别该文件。...查看设备占用,在卸载文件系统时候常用 ? 同样可直接查看目录占用 ? 查看某进程打开文件 ? 或者指定进程pid查看进程打开文件 ?

    4.5K10

    Linux进程——Linux进程概念(PCB理解)

    前言:在了解完冯诺依曼体系结构和操作系统之后,我们进入了Linux下一篇章Linux进程,但在学习Linux进程之前,一定要阅读理解上一篇内容,理解“先描述,再组织”才能更好理解进程含义。...Linux进程学习基础 本篇主要内容: 进程概念 通过系统调用获取进程标示符 1....而这PPID就是进程 我们依然可以用函数来查看进程: 函数:getppid 因此我们可以知道这两个函数: 当我们不断地启动结束进程时,PID每一次数据都不一样,但是PPID却不会改变...,让我们来查看一下进程信息 如果我们直接杀死进程bash,那么我们shell会直接挂掉 3....总结 本篇主要学习进程概念,CPU如何对PCB进行处理,以及初步学习如何查看进程与子进程,希望大家能理解好PCB,下篇我们将深入了解进程创建! 谢谢大家支持本篇到这里就结束了

    13410

    LinuxLinux进程控制——进程创建、进程终止及进程等待详解

    进程创建 fork函数初识 在Linux中fork函数时非常重要函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程进程。.../a.out [root@localhost linux]# ✨return退出 return 是一种更常见退出进程方法。...⭐进程等待 进程等待必要性 在Linux进程提到过,子进程退出,进程如果不管不顾,不读取子进程退出信息,就可能造成“僵尸进程问题,进而造成内存泄漏。...另外,进程一旦变成僵尸状态,那就刀枪不入,“杀人不眨眼”kill -9 也无能为力,因为谁也没有办法杀死一个已经死去进程。 最后,进程派给子进程任务完成的如何,进程也需要知道。...否则,操作系统会根据该参数,将子进程退出信息反馈给进程

    9810

    Linux进程——进程地址空间

    前言:在讲完环境变量后,相信大家对Linux有更进一步认识,而Linux进程概念到这也快接近尾声了,现在我们了解Linux进程地址空间!...} 24 cnt--; 25 } 26 27 } 28 else{ 29 // 进程...因为我们之前讲过子进程按照进程为模版,父子并没有对变量进行进行任何修改 但是在达到一定条件之后,父子进程,输出地址是一致,但是变量内容不一样! 但是相同地址为什么会有不同值?...二、存在虚拟地址空间,可以有效进行进程访问内存安全检查 三、将进程管理和内存管理进行解耦 四、保证进程独立性 通过页表让进程虽然虚拟地址一样但是映射到不同物理内存处,从而实现进程独立性...结束进程地址空间,我们Linux进程概念到这里也结束了,后面我将带大家走进进程控制。 谢谢大家支持本篇到这里就结束了

    18710

    linux通过进程名杀死进程_linux关闭进程命令

    笔记:根据一个进程名字或启动此进程命令(连续一部分即可)杀死进程 一、使用单条命令 ps -ef | grep 进程名/启动进程命令 | grep -v grep | awk ‘{print $2...}’ | xargs kill -9 执行结果: [1]-  已杀死               sleep 200 [2]+  已杀死               sleep 200 二、编写脚本 linux.../bin/bash # 脚本名:kill_process.sh # 脚本功能:强制杀死进程 方式kill -9     # 1通过ps查询进程id     # 2使用kill -9 强制终止进程...请使用此方式运行:/bin/bash kill_process.sh 进程名”     exit 1 fi # 获取要被杀死进程名 pName=$1 <<!    ...————————————————————— # 根据进程查询包含进程进程 并排除grep查询进程和此脚本进程 ps -ef | grep “$pName” | grep -v grep | grep

    16K20

    Linux进程学习【进程状态】

    本文将会带着大家认识各种 进程 状态 ---- 正文 在谈 进程状态 之前,首先要回顾下之前 进程 相关知识 OS管理本质是先描述,再组织 OS并非直接管理 进程 ,而是管理 进程 PCB(...,即把手机揣进兜里,然后 专心执行走路这个 进程 进程状态 进程 有各种运行状态,方便OS进行管理,在 Windows 中,进程 状态是这样 而在我们 Linux 中,新建、就绪、运行都可以看作...运行 R 这一个状态,所以比较清晰 而我们今天要学习正是 Linux 进程 状态 进程是何种状态,取决于此进程PCB在哪里排队 ️运行 R 首先来看看第一种状态 R 以我们以往认知来说...僵尸 T 状态 通俗来说,僵尸状态 是给 进程 准备 当 子进程 被终止后,会先维持一个 僵尸 状态,方便 进程 来读取到 子进程 退出结果,然后再将 子进程 回收 单纯在 bash 环境下终止...进程,此时 子进程 会被OS领养 子进程 进程 变为 1号进程进程 就变成了一个 孤儿进程 发出指令终止 进程 假设 子进程 不被 1号进程 领养 子进程 退出时就会无人回收

    22030
    领券