搜索
首页运维linux运维什么是父进程和子进程

什么是父进程和子进程

Jun 22, 2017 pm 03:41 PM
进程

父进程

在计算机领域,父进程(英语:Parent Process)指已创建一个或多个子进程的进程。

UNIX


在UNIX里,除了进程0(即PID=0的交换进程,Swapper Process)以外的所有进程都是由其他进程使用系统调用fork创建的,这里调用fork创建新进程的进程即为父进程,而相对应的为其创建出的进程则为子进程,因而除了进程0以外的进程都只有一个父进程,但一个进程可以有多个子进程。

操作系统内核以进程标识符(Process Identifier,即PID)来识别进程。进程0是系统引导时创建的一个特殊进程,在其调用fork创建出一个子进程(即PID=1的进程1,又称init)后,进程0就转为交换进程(有时也被称为空闲进程),而进程1(init进程)就是系统里其他所有进程的祖先。

僵尸进程与孤儿进程


当一个子进程结束运行(一般是调用exit、运行时发生致命错误或收到终止信号所导致)时,子进程的退出状态(返回值)会回报给操作系统,系统则以SIGCHLD信号将子进程被结束的事件告知父进程,此时子进程的进程控制块(PCB)仍驻留在内存中。一般来说,收到SIGCHLD后,父进程会使用wait系统调用以获取子进程的退出状态,然后内核就可以从内存中释放已结束的子进程的PCB;而如若父进程没有这么做的话,子进程的PCB就会一直驻留在内存中,也即成为僵尸进程。

孤儿进程则是指父进程结束后仍在运行的子进程。在类UNIX系统中,孤儿进程一般会被init进程所“收养”,成为init的子进程。

为避免产生僵尸进程,实际应用中一般采取的方式是:

  1. 将父进程中对SIGCHLD信号的处理函数设为SIG_IGN(忽略信号);

  2. fork两次并杀死一级子进程,令二级子进程成为孤儿进程而被init所“收养”、清理。

Linux

在Linux内核中,进程和POSIX线程有着相当微小的区别,父进程的定义也与UNIX不尽相同。Linux有两种父进程,分别称为(形式)父进程与实际父进程,对于一个子进程来说,其父进程是在子进程结束时收取SIGCHLD信号的进程,而实际父进程则是在多线程环境里实际创建该子进程的进程。对于普通进程来说,父进程与实际父进程是同一个进程,但对于一个以进程形式存在的POSIX线程,父进程和实际父进程可能是不一样的。

 

子进程


在计算机领域中,子进程为由另外一个进程(对应称之为父进程)所创建的进程。子进程继承了父进程的大部分属性,例如文件描述符。

产生


在Unix中,子进程通常为系统调用fork的产物。在此情况下,子进程一开始就是父进程的副本,而在这之后,根据具体需要,子进程可以借助exec调用来链式加载另一程序。

与父进程的关系


一个进程可能下属多个子进程,但最多只能有1个父进程,而若某一进程没有父进程,则可知该进程很可能由内核直接生成。在Unix与类Unix系统中,进程ID为1的进程(即init进程)是在系统引导阶段由内核直接创建的,且不会在系统运行过程中终止执行(可参见Linux启动流程);而对于其他无父进程的进程,则可能是为在用户空间完成各种后台任务而执行的。

当某一子进程结束、中断或恢复执行时,内核会发送SIGCHLD信号予其父进程。在默认情况下,父进程会以SIG_IGN函数忽略之。

“孤儿进程”与“僵尸进程”


在对应的父进程结束执行后,进程就会变成孤儿进程,但之后会立即由init进程“收养”为其子进程。

某一子进程终止执行后,若其父进程未提前调用wait,则内核会持续保留子进程的退出状态等信息,以使父进程可以wait获取之。而因为在这种情况下,子进程虽已终止,但仍在消耗系统资源,所以其亦称僵尸进程。wait常于SIGCHLD信号的处理函数中调用。

解决与预防

在POSIX.1-2001标准规定中,父进程可将SIGCHLD的处理函数设为SIG_IGN(亦为默认设定),或为SIGCHLD设定SA_NOCLDWAIT标记,以使内核可以自动回收已终止的子进程的资源。自Linux 2.6与FreeBSD 5.0起,两种内核皆支持了这两种方式。但是,在忽略SIGCHLD信号的问题上,由于System V与BSD由来已久的差异,若要回收派生出的子进程的资源,调用wait仍是最便捷的方式。

以上是什么是父进程和子进程的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
掌握Linux操作:实用指南掌握Linux操作:实用指南Apr 12, 2025 am 12:10 AM

掌握Linux操作的原因是其广泛的应用场景和强大的功能。1)Linux适合开发者、系统管理员和技术爱好者,应用于服务器管理、嵌入式系统和容器化技术。2)学习Linux可以从文件系统结构、Shell使用、用户权限管理和进程管理入手。3)Linux命令行是其核心工具,通过Shell执行命令,如ls、mkdir、cd等,支持重定向和管道操作。4)高级用法包括编写自动化脚本,如备份脚本,使用tar命令和条件判断。5)常见错误包括权限、路径和语法问题,可通过echo、set-x和$?调试。6)性能优化建议

Linux的5支支柱:了解他们的角色Linux的5支支柱:了解他们的角色Apr 11, 2025 am 12:07 AM

Linux系统的五大支柱是:1.内核,2.系统库,3.Shell,4.文件系统,5.系统工具。内核管理硬件资源并提供基本服务;系统库为应用程序提供预编译函数;Shell是用户与系统交互的接口;文件系统组织和存储数据;系统工具用于系统管理和维护。

Linux维护模式:工具和技术Linux维护模式:工具和技术Apr 10, 2025 am 09:42 AM

在Linux系统中,可以通过在启动时按特定键或使用命令如“sudosystemctlrescue”进入维护模式。维护模式允许管理员在不受干扰的情况下进行系统维护和故障排除,如修复文件系统、重置密码、修补安全漏洞等。

关键Linux操作:初学者指南关键Linux操作:初学者指南Apr 09, 2025 pm 04:09 PM

Linux初学者应掌握文件管理、用户管理和网络配置等基本操作。1)文件管理:使用mkdir、touch、ls、rm、mv、cp命令。2)用户管理:使用useradd、passwd、userdel、usermod命令。3)网络配置:使用ifconfig、echo、ufw命令。这些操作是Linux系统管理的基础,熟练掌握它们可以有效管理系统。

如何使用sudo向Linux的用户授予高架特权?如何使用sudo向Linux的用户授予高架特权?Mar 17, 2025 pm 05:32 PM

本文解释了如何管理Linux中的Sudo特权,包括授予,撤销和安全性最佳实践。关键重点是安全和sudoers安全和限制访问。Character数量:159

如何在Linux中实现SSH的两因素身份验证(2FA)?如何在Linux中实现SSH的两因素身份验证(2FA)?Mar 17, 2025 pm 05:31 PM

本文提供了有关使用Google Authenticator在Linux上设置两因素身份验证(2FA)的指南,详细介绍了安装,配置和故障排除步骤。它突出了2FA的安全益处,例如增强的SEC

如何使用TOP,HTOP和VMSTAT等工具来监视Linux中的系统性能?如何使用TOP,HTOP和VMSTAT等工具来监视Linux中的系统性能?Mar 17, 2025 pm 05:28 PM

本文讨论了使用TOP,HTOP和VMSTAT监视Linux系统性能,并详细介绍其独特功能和自定义选项,以进行有效的系统管理。

如何使用软件包管理器(APT,YUM,DNF)管理Linux中的软件包?如何使用软件包管理器(APT,YUM,DNF)管理Linux中的软件包?Mar 17, 2025 pm 05:26 PM

文章讨论了使用APT,YUM和DNF在Linux中管理软件包,涵盖安装,更新和删除。它比较了它们对不同分布的功能和适用性。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境