首页
学习
活动
专区
圈层
工具
发布

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

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

6.5K10

探索父进程和子进程

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

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

    关于进程的实验(子进程和父进程相关的)

    让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。...下面的是源代码: 下面的是执行的结果:可以发现也是会出现不同的这个结果的,一次是bac也就是子进程1,父进程,子进程2的顺序,还有一个就是父进程,子进程1,子进程2的顺序; 3.第三个问题 如果在程序中使用系统调用...fork函数调用一次,返回两次:在父进程中返回子进程的 ID(大于 0 的值),在子进程中返回 0,如果创建失败则返回 - 1。这里通过while循环确保fork成功执行。...由于lockf函数的存在,每个子进程内部的输出是有序的,但两个子进程和父进程之间的输出顺序是不确定的,取决于操作系统的进程调度。...例如,可能先输出父进程的内容,然后是第一个子进程的内容,最后是第二个子进程的内容;也可能是其他顺序 。但每个子进程自身的 5 次循环输出是连续且有序的。

    86910

    查询java进程的linux命令

    欢迎关注微信公众号:数据科学与艺术 作者WX:superhe199 在 Linux 中,可以使用以下命令来查询 Java 进程: ps 命令:ps 命令用于显示当前运行的进程。...可以使用以下命令来查询 Java 进程: ps -ef | grep java 这将列出所有含有 “java” 关键字的进程,并显示它们的进程 ID(PID)、父进程 ID(PPID)、进程状态等信息。...可以使用以下命令来查询 Java 进程: jps 这将列出所有正在运行的 Java 进程,并显示它们的进程 ID 和进程名称。...可以使用以下命令来查询 Java 进程: top -p 将 替换为具体的 Java 进程 ID,这将单独显示该进程的信息。...使用Runtime对象的exec()方法执行Linux命令,并返回表示子进程的Process对象。

    1.8K10

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

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

    2.6K20

    父进程欺骗实践

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

    2K20

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

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

    14.4K21

    操作系统关于进程的实验报告(父进程和子进程)

    让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。...下面的是源代码:下面的是执行的结果:可以发现也是会出现不同的这个结果的,一次是bac也就是子进程1,父进程,子进程2的顺序,还有一个就是父进程,子进程1,子进程2的顺序;3.第三个问题如果在程序中使用系统调用...fork函数调用一次,返回两次:在父进程中返回子进程的 ID(大于 0 的值),在子进程中返回 0,如果创建失败则返回 - 1。这里通过while循环确保fork成功执行。...操作系统-ckf函数的存在,每个子进程内部的输出是有序的,但两个子进程和父进程之间的输出顺序是不确定的,取决于操作系统的进程调度。...例如,可能先输出父进程的内容,然后是第一个子进程的内容,最后是第二个子进程的内容;也可能是其他顺序 。但每个子进程自身的 5 次循环输出是连续且有序的。-操作系统--

    80200

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

    65820

    【Linux】Linux进程控制>进程创建&&进程终止&&进程等待&&进程程序替换

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

    4.6K10

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

    4.6K20

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

    3K10

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

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

    6.3K11

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

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

    1.2K10

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

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

    16.6K30

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

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

    3.6K10

    【Linux进程】初悉进程

    进程调度简介 在Linux中,进程是最基本的执行单位。...Linux操作系统属于多任务操作系统,系统中的每个进程能够分时复用CPU时间片,通过有效的进程调度策略实现多任务并行执行。...Linux内核涉及进程和程序的所有算法都围绕名为task_struct的数据结构而建立操作。...active_mm:在没有独立内存空间时,指向当前活动的内存描述符。 exit_state、exit_code和exit_signal:进程退出时的状态、退出码和发送给父进程的信号。...⑵Linux内核下的进程分类 在Linux内核中,进程可以按照其调度需求和优先级的不同分为不同的类别,主要包括: SCHED_FIFO:实时进程中,优先级高的进程总是优先执行,一旦开始运行,除非进程主动放弃

    2K10
    领券