首页 > 系统相关 >进程控制之僵尸进程和孤儿进程

进程控制之僵尸进程和孤儿进程

时间:2023-02-03 11:23:04浏览次数:41  
标签:僵尸 pid 孤儿 sleep printf 进程 include

一、孤儿进程

1. 孤儿进程: 父进程先于子进程结束,则子进程成为孤儿进程。子进程成为孤儿进程之后,init进程则会成为其新的父进程,称为init进程领养孤儿进程。

2. 例程:

复制代码
 1 #include <stdio.h>
 2 #include <unistd.h>
 3 #include <sys/wait.h>
 4 
 5 int main(void)
 6 {
 7     pid_t pid;
 8     pid = fork();
 9 
10     if (pid == 0) {
11         while (1) {
12             printf("I am child, my parent pid = %d\n", getppid());
13             sleep(1);
14         }
15     } else if (pid > 0) {
16             printf("I am parent, my pid is = %d\n", getpid());
17             sleep(9);
18             printf("------------parent going to die------------\n");
19     } else {
20         perror("fork");
21         return 1;
22     }
23     return 0;
24 }
复制代码

编译与执行结果:

二、僵尸进程

1. 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。

2. 例程:

复制代码
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <unistd.h>
 4 #include <sys/wait.h>
 5 
 6 int main(void)
 7 {
 8     pid_t pid, wpid;
 9     pid = fork();
10 
11     if (pid == 0) {
12             printf("---child, my parent= %d, going to sleep 10s\n", getppid());
13             sleep(10);
14             printf("-------------child die--------------\n");
15     } else if (pid > 0) {
16         while (1) {
17             printf("I am parent, pid = %d, myson = %d\n", getpid(), pid);
18             sleep(1);
19         }
20     } else {
21         perror("fork");
22         return 1;
23     }
24 
25     return 0;
26 }
复制代码

编译与执行结果:

标签:僵尸,pid,孤儿,sleep,printf,进程,include
From: https://www.cnblogs.com/kn-zheng/p/17088532.html

相关文章

  • 进程控制之exec函数族
     一、引言进程通过exec函数根据指定的文件名或目录名执行另一个可执行文件,当进程调用exec函数时,该进程的数据段、代码段和堆栈段完全被新程序替换,从新程序的启动例程开始......
  • 进程间通信之fifo
    一、引言FIFO常被称为有名管道,不同于管道(pipe)。pipe仅适用于“有血缘关系”的IPC。但FIFO还可以应用于不相关的进程的IPC。实际上,FIFO是Linux基础文件类型中的一......
  • 进程状态与进程关系
    一、进程的六种状态Linux系统下进程通常存在6种不同的状态,分为:就绪态、运行态、僵尸态、可中断睡眠状态(浅度睡眠)、不可中断睡眠状态(深度睡眠)以及暂停态。就......
  • Oracle系统常见进程有哪些,作用是什么?
    转至:https://vip.kingdee.com/article/336895665106415104?isKnowledge=2&productLineId=8Oracle系统常见进程如下: 五个必须的ORACLE后台进程SMON、PMON、DBWn、CKPT......
  • 写了个监控 ElasticSearch 进程异常的脚本!
    作者:JackTian来源:公众号「杰哥的IT之旅」ID:Jake_Internet服务器配置免密钥环境准备:配置免密钥前,需要在服务器的hosts文件中配置目标主机名称与IP对应关系。vim/......
  • Linux进程和计划任务
    一、进程及其命令介绍1.1什么是进程要想了解进程,首先我们要了解什么是程序。程序是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具;而进程......
  • pgrep:根据名称或其他属性查找进程(查找系统中running状态的进程)
    用法示例#根据名称过滤dewanWork~/code/shell%pgrepqemu3570191dewanWork~/code/shell%pgrepqemu-l3570191qemu-system-x86dewanWork~/code/shell%p......
  • linux查看进程号、端口号、服务名互查信息
    1、已知程序名称查看进程号ps-ef|grep程序名称##或者ps-aux|grep程序名称pgrep-l程序名称......
  • 进程与子进程
    一、子进程1.fork()创建子进程一个现有的进程可以调用fork()函数创建一个新的进程,调用fork()函数的进程称为父进程,由fork()函数创建出来的进程被称为子进程(child......
  • Linux系统日常进程管理与监控
    1.进程是什么进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。在LINUX系统中进程ID用PID表示,范围从0-32768,其中PI......