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

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

mycode,它 PPID(Parent Process ID)是10138,表示它进程是PID为10138进程。...在 Linux 中,每个进程都属于一个或多个组,getgid() 函数返回调用进程有效组 ID。...在Unix/Linux系统中,可以使用 getpid() 系统调用来获取当前进程PID,使用 getppid() 系统调用来获取当前进程进程PID。...下面是对这两个返回值解释: 给进程返回子进程 PID:在进程中,fork 返回新创建子进程进程 ID(PID),这个 PID 是子进程标识符,进程通过这个 PID 可以识别并操作子进程。...3.3Linux中状态初步认识 一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)进程状态通常由几个不同状态标识符表示。

75910

Linux进程ID号--Linux进程管理与调度(三)【转】

Linux 内核使用 task_struct 数据结构来关联所有与进程有关数据和结构,Linux 内核所有涉及到进程和程序所有算法都是围绕该数据结构建立,是内核中最重要数据结构之一。...进程ID概述 进程ID类型 要想了解内核如何来组织和管理进程ID,先要知道进程ID类型: 内核中进程ID类型用pid_type来描述,它被定义在include/linux/pid.h中: enum...是 Linux 中在其命名空间中唯一标识进程而分配给它一个号码,称做进程ID号,简称PID。...(轻量级进程组)ID标识 在一个进程中,如果以CLONE_THREAD标志来调用clone建立进程就是该进程一个线程(即轻量级进程Linux其实没有严格进程概念),它们处于一个线程组,该线程组所有线程...内核是如何设计task_struct中进程ID相关数据结构 Linux 内核在设计管理ID数据结构时,要充分考虑以下因素: 如何快速地根据进程 task_struct、ID类型、命名空间找到局部ID

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

探索进程和子进程

: 通过getpid()得到PID和ps指令获取进程PID是一致,都是5258 一个进程属性中,除了有自己进程PID还有进程PID,ps指令中查询到PPID是当前进程进程PID,可以是用函数...>0时,执行进程,当id==0时,执行子进程。...在代码中,fork函数返回值我们用变量id来接收:pid_t id=fork(),为什么id可以同时有两个值? 在任何平台,进程在运行时候都是具有独立性。...子进程可以把进程数据全被拷贝一份,但是大部分数据对于子进程来说可能都是没用,这就造成了浪费,所以操作系统只是把进程中数据层面的代码临时拷贝一份给子进程,即子进程创建后,会共享进程代码和数据,...变量id接收值是fork函数返回值,进程return一次,子进程return一次,子进程会执行写时拷贝,所以变量会有两个返回值,本质上是有两块空间。

10510

进程ID进程关系

进程ID 进程相关 ID 有多种,除了进程标识 PID 外,还包括:线程组标识 TGID,进程组标识 PGID,回话标识 SID。...TGID/PGID/SID 分别是相关线程组长/进程组长/回话 leader 进程 PID。 下面分别介绍这几种ID。 PID 进程总是会被分配一个唯一标识它们进程ID号,简称 PID。...因此进程还可以注册 SIGCHLD 信号处理函数,异步回收资源。 如果进程提前结束,那么子进程将把1号进程 init 作为进程。总之,进程都有进程,负责进程结束后资源回收。...在子进程退出且进程完成回收前,子进程变成僵尸进程。僵尸进程持续时间通常比较短,在进程回收它资源后就会消亡。如果进程没有处理子进程终止,那么子进程就会一直处于僵尸状态。...会话、进程组关系 Linux 系统中可以有多个会话(session),每个会话可以包含多个进程组,每个进程组可以包含多个进程

44623

进程和子进程谁先运行?

Linux中,进程和子进程是并行运行,先运行哪个是不确定,在小红帽系统(Red Hat)中,先运行是子进程,在ubuntu系统中,进程是先运行。...其实谁先运行不重要了,一般在编程中,把进程当做守护进程使用,用一个waitpid(pid,&status,0) != pid 等待子进程结束,进程一直阻塞在这个函数中。...Child process ID: %d\n", pid); } return 0; } 结果(Ubuntu中):明显先打印了进程 ?...Child process ID: %d\n", pid); pid_wait = waitpid(pid, &status, 0); // 等待指定进程进程 printf("Child...\n", pid_wait); } return 0; } 结果(Ubuntu中):进程等待了子进程结束 ? 如果喜欢我文章,欢迎关注、点赞和转发,下面可以留言~~~

3.8K30

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

白发人送黑发人 一个普遍常识是,在Linux里面总是“白发人送黑发人”,子进程死亡,进程透过wait()等待子进程死亡,并清理子进程僵尸,当然进程也可以因此而获得子进程死亡原因。.../a.out child process id: 3320 然后用信号2去杀死这个子进程3320: kill -2 3320 进程waitpid()返回,然后status里面获知原因,进程打印:...则进程探测到子进程死亡后,可打印它退出状态: $ ..../a.out child process id: 3362 child process exits, status=1 由此可以看出,进程对子进程死亡和死亡原因是了如指掌。 ?...事出必有因 那么,进程为什么必须知道子进程死亡呢?进程为什么一定要苦苦地知道子进程死亡原因?

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...2020/02/24/parent-pid-spoofing/ https://ired.team/offensive-security/defense-evasion/parent-process-id-ppid-spoofing

1.4K20

Linux】解决:为什么重复创建同一个【进程pid会变化,而ppid进程id不变?】

前言 大家好吖,欢迎来到 YY 滴Linux 系列 ,热烈欢迎!...本章主要内容面向接触过Linux老铁 主要内容含: 1.系统调用接口查看pid,ppid pid:当前进程 ppid:进程 每一次启动进程, 系统会重新生成pid ,系统只保证当前生命周期内...pid有效; 但是 进程不会变 2.为什么ppid进程id不变?...——bash命令行解释器与bash进程 当我们运行一个进程时,命令行解释器会把这个指令解释成bash进程 接着再由这个bash进程执行对应命令 当这个子进程出现问题时,并不影响bash进程...即:每一条命令被执行,都属于bash进程 我们执行一段代码,parent对应是getppid()函数; 我们接着用ps+grep过滤指令查看这个16815进程,发现其就是bash进程

13610

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

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

11.8K21

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

14220

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

假设是a进程创建了b进程,那么a进程就是b进程进程。...IceSworld,Process Explorer等) 查看时,会发现提权进程进程是创建它进程,这是由于AIS利用了CreateProcessAsUser() API中一个新功能,这里新功能就是将提权进程进程设置成创建该进程进程...,假设我们利用一下该API,我们就能够将自己进程进程设置为随意进程(要提权绕过UAC鸽子注意了),假设把木马进程进程设置为 杀软 ID或者csrss.exe ,notepad.exe 等可信进程...就能能设置这个被创建进程进程,这里也仿照黑防上贴下部分代码: DWORD pid = 0; /* 依据进程名获取随意进程Id */ GetProcessIdByName(L"explorer.exe...假设你调试程序检測进程,直接用以上办法启动它,当然进程就是他检測同意进程喽, 这里启动时要注意是设置CREATE_SUSPEND 就是创建挂起,然后在创建后使用ResumeThread恢复就能够顺利调试了

1.6K30

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

1.进程创建 1.1 fork函数 在linux中fork函数时非常重要函数,它从已存在进程中创建一个新进程。...新进程为子进程,而原进程进程 #include pid_t fork(void); 返回值:自进程中返回0,进程返回子进程id,出错返回-1 进程调用fork,当控制转移到内核中...); 返回值: 当正常返回时候waitpid返回收集到进程进程ID; 如果设置了选项WNOHANG,而调用中waitpid发现没有已退出进程可收集,则返回0; 如果调用中出错,则返回-...Pid>0.等待其进程ID与pid相等进程。 status: WIFEXITED(status): 若为正常终止子进程返回状态,则为真。...(查看进程退出码) options: WNOHANG: 若pid指定进程没有结束,则waitpid()函数返回0,不予以等待。若正常结束,则返回该子进 程ID

11310

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进程优先级,而进程优先级与前面内容相差较大,希望大家能够多花点时间理解!

7410

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进程分类时,我们通常是先了解操作系统进程,因为二者有一定联系,了解操作系统能更好理解进程在操作系统中运行关系。进程状态在进程中也极为重要,希望大家能理解透彻!

9610

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

前言:在了解完冯诺依曼体系结构和操作系统之后,我们进入了Linux下一篇章Linux进程,但在学习Linux进程之前,一定要阅读理解上一篇内容,理解“先描述,再组织”才能更好理解进程含义。...Linux进程学习基础 本篇主要内容: 进程概念 通过系统调用获取进程标示符 1....: 指令:kill -9 进程id 注意:这里-9是信号参数,后面会提到,现在直接使用即可 使用指令能直接杀死进程 以上说明我们所有运行指令,软件,自己写可执行程序都是进程!...而这PPID就是进程 我们依然可以用函数来查看进程: 函数:getppid 因此我们可以知道这两个函数: 当我们不断地启动结束进程时,PID每一次数据都不一样,但是PPID却不会改变...,让我们来查看一下进程信息 如果我们直接杀死进程bash,那么我们shell会直接挂掉 3.

8810

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 强制终止进程...kill_processes(){     # 获取进程id     pids=$(ps -ef | grep “$1” | grep -v grep | grep -v $0 | awk ‘{...————————————————————— # 根据进程名查询包含进程进程 并排除grep查询进程和此脚本进程 ps -ef | grep “$pName” | grep -v grep | grep

15.9K20
领券