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

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

Linux 中,每个进程都属于一个或多个组,getgid() 函数返回调用进程有效组 ID。...1.4通过 /proc 系统文件夹进程Linux系统中,/proc文件系统提供了关于运行中进程详细信息。你可以通过查看/proc文件系统中特定目录和文件来获取有关进程信息。...2.进程与子进程 2.1介绍 在操作系统中,当一个进程(称为进程)创建另一个进程(称为子进程)时,父子进程之间建立了一种特殊关系。...在Unix/Linux系统中,可以使用 getpid() 系统调用来获取当前进程PID,使用 getppid() 系统调用来获取当前进程进程PID。...3.3Linux中状态初步认识 一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)进程状态通常由几个不同状态标识符表示。

91310

探索进程和子进程

: 通过getpid()得到PID和ps指令获取进程PID是一致,都是5258 一个进程属性中,除了有自己进程PID还有进程PID,ps指令中查询到PPID是当前进程进程PID,可以是用函数...先来认识一下fork函数: fork函数会以调用该函数进程作为进程创建一个进程 创建成功时,会在进程中返回子进程PID,在子进程中返回0;如果失败,在进程中返回-1,没有子进程创建。...一个进程可以创建多个子进程,为了区分这些子进程,fork函数在创建子进程后,会给进程返回子进程pid。子进程只需调用getppid()函数即可找到进程。...调用fork函数创建子进程,实际上是在操作系统中多了一个进程,一样,它也需要先创建一个属于自己PCB对象,子进程PCB对象大部分都是以进程PCB对象为模板创建,即直接从父进程PCB对象那拷贝过来...fork有两个返回值本质上是因为父子进程共用一份代码导致进程会执行return返回一个值,子进程也会执行return返回一个值。 一个变量为什么同时会有两个返回值?

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

linux0.11一个进程诞生

这一篇大致说一下进程创建,有兴趣可以参考之前一些文章或者直接上代码https://github.com/theanarkh/read-linux-0.11。 系统有一个GDT表。...该表保存了系统和所有进程tss和ldt描述符信息。tss就是我们平时说进程上下文。每个进程一个ldt数组,里面保存了代码段和数据段描述符信息。 首先,从一个进程诞生说起。...我们知道,通过fork可以创建一个进程。下面我们来看一下fork过程都做了什么事情。先通过find_empty_process获取一个可用进程id和pcb。pid是进程id。...task[i]) return i; return -EAGAIN; } 接着调用copy_process复制进程信息。...// 把进程页目录项和页表复制到子进程,old_data_base,new_data_base是线性地址,父子进程共享物理页面,即copy on write if (copy_page_tables

1.5K11

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

白发人送黑发人 一个普遍常识是,在Linux里面总是“白发人送黑发人”,子进程死亡,进程透过wait()等待子进程死亡,并清理子进程僵尸,当然进程也可以因此而获得子进程死亡原因。...则进程探测到子进程死亡后,可打印它退出状态: $ ....事出必有因 那么,进程为什么必须知道子进程死亡呢?进程为什么一定要苦苦地知道子进程死亡原因?...前一个问题很好回答,如果我们用init进程启动了一个httpd服务供客户访问我们网站,然后httpd进程半夜挂了。...所以,这个过程应该由Linux某种机制自动完成,比如如果init知道了httpd死亡的话,它可以内在地自动重新启动一个httpd进程

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

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

前言 子进程退出时候,进程能够收到子进程退出信号,便于管理,但是有时候又需要在进程退出时候,子进程也退出,该怎么办呢? 进程退出时,子进程会如何?...,而是被一个名为/sbin/upstart进程所收养。...第一个参数中,有一个选项,叫做PR_GET_PDEATHSIG: PR_SET_PDEATHSIG (since Linux 2.1.57) Set the...内容很多,主要意思为:设置一个信号,当进程退出时候,子进程将会收到该信号。 那么根据这个,我们完全可以在进程退出时,也给子进程一个退出信号。...练习 尝试将上面的代码在非图形界面的linux操作系统中运行,看看最终被收养是否为init进程。 交流 虽然本文方法可行,但并不适用于所有操作系统,你有什么更好办法解决上面的问题?

11.9K21

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这样字节设备特性有关)

14920

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

表面上。在windows中。 假设是a进程创建了b进程,那么a进程就是b进程进程。...反之,假设是b创建了a,那么b进程就是a进程,这是在windows出现以来一直是程序员们都证实,可是在在win Vista后面有了一个新安全消息机制。...IceSworld,Process Explorer等) 查看时,会发现提权进程进程是创建它进程,这是由于AIS利用了CreateProcessAsUser() API中一个功能,这里新功能就是将提权进程进程设置成创建该进程进程...,那么对于根据进程可疑(进程链)来查杀杀软就轻易绕过了,这里顺便提示下还有一个绕过反调试小技巧,假设你发现一个该死小程序检查进程是不是explorer.exe来推断是否是合法环境。...而且提供一个(有足够权限)进程句柄。

1.6K30

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

1.进程创建 1.1 fork函数 在linux中fork函数时非常重要函数,它从已存在进程中创建一个进程。...fork代码后,内核做: 分配新内存块和内核数据结构给子进程进程部分数据结构内容拷贝至子进程 添加子进程到系统进程列表当中 fork返回,开始调度器调度 当一个进程调用fork之后,就有两个二进制代码相同进程...具体见下图: 1.3 fork常规用法 一个进程希望复制自己,使父子进程同时执行不同代码段。例如,进程等待客户端请求,生成子进程来处理请求 一个进程要执行一个不同程序。...所以要写一个shell,需要循环以下过程: 获取命令行 解析命令行 建立一个进程(fork) 替换子进程(execvp) 进程等待子进程退出(wait) 根据这些思路,和我们前面的学技术,就可以自己来实现一个...Linux鼓励将这种应用于程序之内模式扩展到程序之间。如下图 一个C程序可以fork/exec另一个程序,并传给它一些参数。这个被调用程序执行一定操作,然后通过exit(n)来返回值。

13110

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

所以,只要子进程退出,进程还在运行,但进程没有读取子进程状态,子进程进入Z状态 僵尸状态就是Linux状态中X死亡状态!...1.2 为什么会存在僵尸状态 Linux进程中,当一个进程死亡时不会立刻销毁,而是要等待我们读取死亡信息后才会死亡!...综上所述:当一个进程退出了,但是退出信息还没被进程读取,此时这个退出进程PCB结构不被释放,此时这个退出进程就处于僵尸状态(Z) 1.3 观察僵尸状态 让我们来直观看了解一下僵尸状态 1 #include...开个玩笑,孤儿进程进程在子进程退出之前就先退出了,此时进程就称为“孤儿进程” 但是前面刚刚讲过一个进程在死亡时,PCB死亡信息必须被读取后,才会释放PCB,但是如果进程已经退出了,子进程...容易导致优先级较低进程,长时间得不到CPU资源 --进程饥饿 因此:每一个进程不是占有CPU就一直运行,每隔一段时间,自动被从CPU上剥离下来 Linux 内核支持进程之间进行cpu资源抢占,基于时间片轮转式抢占式内核

8210

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

前言:在进程学习这一块,我们主要学习就是PCB这个进程控制块,而PBC就是用来描述进程结构体,而进程状态就是PCB结构体中一个变量。...本篇主要内容: 操作系统中进程状态 Linux进程状态 在开始之前,我们先来简单了解以下进程状态 进程本质就是PCB中一个变量!!! 所谓状态变化,本质就是修改整形变量!!!...挂起状态 假设: 一个进程当前被阻塞了,那么这个进程在它所等待资源没有就绪时候,该进程是无法被调度。如果此时恰好OS内内存资源已经严重不足了,那么操作系统该怎么办?...此时,恰好系统内内存资源已经严重不足了,系统压力太大,Linux在是在没办法时候,会通过杀掉进程,节省资源,来不及进程反应直接被系统 “干掉” 。...总结 在了解Linux进程分类时,我们通常是先了解操作系统进程,因为二者有一定联系,了解操作系统能更好理解进程在操作系统中运行关系。进程状态在进程中也极为重要,希望大家能理解透彻!

11310

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

前言:在了解完冯诺依曼体系结构和操作系统之后,我们进入了Linux下一篇章Linux进程,但在学习Linux进程之前,一定要阅读理解上一篇内容,理解“先描述,再组织”才能更好理解进程含义。...Linux进程学习基础 本篇主要内容: 进程概念 通过系统调用获取进程标示符 1....用系统调用函数查看PID 2.4 进程和子进程 在使用ps指令查看进程信息时,除了PID我们可以看见左边还有一个PPID,当我们不断地启动结束进程时,PID每一次数据都不一样,但是PPID...而这PPID就是进程 我们依然可以用函数来查看进程: 函数:getppid 因此我们可以知道这两个函数: 当我们不断地启动结束进程时,PID每一次数据都不一样,但是PPID却不会改变...,让我们来查看一下进程信息 如果我们直接杀死进程bash,那么我们shell会直接挂掉 3.

10810

Linux进程——进程地址空间

前言:在讲完环境变量后,相信大家对Linux有更进一步认识,而Linux进程概念到这也快接近尾声了,现在我们了解Linux进程地址空间!...因为我们之前讲过子进程按照进程为模版,父子并没有对变量进行进行任何修改 但是在达到一定条件之后,父子进程,输出地址是一致,但是变量内容不一样! 但是相同地址为什么会有不同值?...进程地址空间 我们现在来深入了解一下为什么相同地址为什么会有不同值? 首先引入一个概念:每一个进程运行之后,都会有一个进程地址空间存在,在系统层面都要有自己页表映射结构!...因此:当一个进程先修改后,它就不再指向原来那块物理空间,而是拥有一个物理空间!而页表左边虚拟空间没有发生改变,所以相同地址为什么会有不同值,是因为映射物理空间不同! 3....结束进程地址空间,我们Linux进程概念到这里也结束了,后面我将带大家走进进程控制。 谢谢大家支持本篇到这里就结束了

14310

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

15.9K20

Linux进程学习【进程状态】

,即把手机揣进兜里,然后 专心执行走路这个 进程 进程状态 进程 有各种运行状态,方便OS进行管理,在 Windows 中,进程 状态是这样 而在我们 Linux 中,新建、就绪、运行都可以看作...运行 R 这一个状态,所以比较清晰 而我们今天要学习正是 Linux 进程 状态 进程是何种状态,取决于此进程PCB在哪里排队 ️运行 R 首先来看看第一种状态 R 以我们以往认知来说...进程 在指定行暂停运行,此时 进程 处于 追踪暂停状态 t ️死亡 X 当进程被终止后,就处于 死亡 X 状态 死亡状态是无法在任务列表中观察到,死亡 X 状态只是一个返回状态 ️僵尸 Z 与死亡状态相对应还有一个...僵尸 T 状态 通俗来说,僵尸状态 是给 进程 准备 当 子进程 被终止后,会先维持一个 僵尸 状态,方便 进程 来读取到 子进程 退出结果,然后再将 子进程 回收 单纯在 bash 环境下终止...进程,此时 子进程 会被OS领养 子进程 进程 变为 1号进程进程 就变成了一个 孤儿进程 发出指令终止 进程 假设 子进程 不被 1号进程 领养 子进程 退出时就会无人回收

21230

Linux进程调度_linux进程查看和调度

一、普通进程Linux 中普通进程依赖称之为 nice 值 东东来进行进程优先级描述。nice 值范围是 [-20, 19]。...越高优先级 普通进程 有着越高执行时间(注意,这里值越高执行时间,指的是在一小段观察时间内,每个可执行进程都执行一遍情况,这里描述可能产生一些歧义,稍安勿躁,接着)。...—— 小结 实时进程优先级:value 越高,优先级越大 普通进程优先级:nice值越高,普通进程优先级越小 任何实时进程优先级 > 普通进程 Linux 调度算法 ---- Linux 中有一个调度结构...既然所有进程vruntime增长速度宏观上应该是同时推进,那么就可以用vruntime来选择运行进程,vruntime值较小就说明它以前占用cpu时间较短,受到了“不公平”对待,因此下一个运行进程就是它...Linux 调度时机 ---- 一、进程切换 从进程角度,CPU是共享资源,由所有的进程按特定策略轮番使用。

20.6K10

Linux中查看进程、杀死进程、进入进程命令

2.杀死进程    使用kill命令结束进程:kill xxx    常用:kill -9 324    Linux下还提供了一个killall命令,可以直接使用进程名字而不是进程标识号,例如:...(1)强行中止(经常使用杀掉)一个进程标识号为324进程: #kill -9 324 (2)解除Linux系统死锁 在Linux中有时会发生这样一种情况:一个程序崩溃,并且处于死锁状态。...(4)killall命令 Linux下还提供了一个killall命令,可以直接使用进程名字而不是进程标识号,例如: # killall -HUP inetd *杀死进程最安全方法是单纯使用kill...然而,如果进程启动了子进程,只杀死进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓“僵尸进程”,应确保在杀死进程之前,先杀死其所有的子进程。...*TERM信号 给进程发送一个TERM信号,试图杀死它和它进程。 # kill -TERM PPID *killall命令 killall命令杀死同一进程组内所有进程

11.5K30

Linux进程学习【进程地址】

"字符串地址:%p\n", ps); //%p 专门用来打印地址信息 return 0; } 利用前面学习 fork 函数创建子进程,使得子进程进程共同使用一个变量 #include <stdio.h...d 共享值地址:%p\n", getpid(), getppid(), val, &val); exit(0); } waitpid(id, 0, 0); printf("我是进程...光有 虚拟地址空间 是不够,还需要一套完整 ‘‘翻译’’ 机制进行程序寻址,如 Linux 页表 + MMU ️页表+MMU 页表 本质上就是一张表,操作系统 会为每个 进程 分配一个 页表...️写时拷贝 Linux 中存在一个很有意思机制:写时拷贝 这是一种 赌bo 行为,OS 此时就赌你不会对数据进行修改,这样就可以 使多个 进程 在访问同一个数据时,指向同一块空间,当发生改写行为时...Linux进程学习【进程地址】全部内容了,我们从一个有趣小问题切入,见识到了 虚拟地址空间 与 物理地址空间 奇妙关系,在种种机制加持之下,OS 对进程管理变得更加得心应手,系统也因此得以高效运行

17020
领券