exit()函数

  • 调用用 atexit() 注册的任何函数。这些函数在进程终止时应运行。
  • 刷新所有打开的流,这样可以确保将缓冲数据写入相关文件。
  • 关闭所有打开的文件描述符。
  • 返回操作系统的控制,表示进程终止。

_exit()函数

是一个低级函数,它立即终止进程,而不执行 exit() 所做的任何清理操作。

这包括不调用用 atexit() 注册的函数,不刷新流,也不关闭打开的文件描述符。因此,通常在进程需要快速终止而不执行任何其他操作的情况下使用 _exit()

_exit() 可能会在进程作为守护进程运行,并需要在操作系统发出的信号的响应中终止的情况下使用。在这种情况下,进程可能没有时间执行 exit() 所做的清理操作,_exit() 提供了一种快速终止进程的方法。

通常情况下,应使用 exit() 终止进程,

孤儿进程

孤儿进程是指父进程已终止,但自身尚未终止的进程。在类 Unix 操作系统中,当进程终止时,它的子进程会变成孤儿进程,操作系统通常会为它们分配新的父进程,通常是进程 ID(PID)为 1init 进程。

孤儿进程可以继续运行并执行其任务,但如果它们依赖父进程获取某些资源或行为,则可能无法按预期执行。例如,孤儿进程可能不会接收父进程应处理的信号,或者可能没有访问父进程有权访问的某些文件或目录的权限。

为了防止创建孤儿进程,通常是好的做法在父进程完成与它们的交互后确保子进程被正确终止。可以使用 wait()waitpid() 函数实现此目的,这些函数允许父进程在退出前等待子进程终止。

僵尸进程

僵尸进程是指已终止但尚未被父进程回收的进程。在类 Unix 操作系统中,当一个进程终止时,它的进程描述符仍然保留在系统中,但它不再执行任何操作。

如果父进程没有调用 wait()waitpid() 函数来回收子进程的状态信息,那么子进程就会变成僵尸进程。

僵尸进程占用系统资源,但不再执行任何操作。如果系统中有大量僵尸进程,可能会导致系统资源不足,从而影响其他进程的正常运行。因此,父进程应在终止时尽可能及时地回收子进程的状态信息,以避免创建僵尸进程。

exit函数 _exit()函数,孤儿进程,僵尸进程相关推荐

  1. linux系统编程学习_(2)进程控制-- fork函数、exec函数族、回收子进程--孤儿进程僵尸进程、wait函数

    linux系统编程学习_(2)进程控制-- fork函数.exec函数族.回收子进程–孤儿进程僵尸进程.wait函数 进程控制 fork()函数 创建一个子进程. pid_t fork(void); ...

  2. exit()和_exit()函数

    进程就好比人一样有其生命,我们通过fork()函数来创建一个进程,那么我们又是如何来中止进程呢. 进程退出 1.在Linux中任何让一个进程退出 进程退出表示进程即将结束.在Linux中进程退出分为了 ...

  3. 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程

    其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给 ...

  4. 浅析三种特殊进程:孤儿进程,僵尸进程和守护进程.

    其实有时想想linux内核的设计也蕴含着很多人生哲学,在linux中有这么几个特殊进程中,我们一开始见到它们的名字可能还会觉得很诧异,但在了解完了原理后,我们仔细想想,这样的命名也不无道理!下面我就给 ...

  5. Linux下Exit和_exit函数说明

    exit和_exit函数都是用来终止进程的.当程序执行到exit或_exit时,系统无条件的停止剩下所有操作,清除包括PCB(进程控制块)在内的各种数据结构,并终止本进程的运行.但是,这两个函数是有区 ...

  6. 守护进程/僵尸进程/孤儿进程

    一 守护进程 守护进程就是在后台运行,不与任何终端关联的进程,,一个守护进程的父进程是init进程,它是一个孤儿进程,没有控制终端,所以任何输出,无论是向标准输出设备stdout还是标准出错设备std ...

  7. exit和_exit函数

    1.exit函数 1 #include <stdlib.h> 2 void exit(int status); 3 功能:退出当前进程 4 参数: 5 status:退出状态,由父进程通过 ...

  8. Kill杀死Linux中的defunct进程(僵尸进程)

    一.什么是defunct进程(僵尸进程)? 在 Linux 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程.当用ps命令观察进程的执行状 ...

  9. java defunct怎么杀掉_杀死Linux中的defunct进程(僵尸进程)的方法指南

    一.什么是defunct进程(僵尸进程)在 Linux 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程.当用ps命令观察进程的执行状态时 ...

最新文章

  1. Python设计模式-备忘录模式
  2. varnish详解3
  3. 内存中OLTP(Hekaton)的排序警告
  4. Android Studio安装Genymotion插件
  5. 汤家凤高等数学基础手写笔记-不定积分
  6. arcgis jsapi接口入门系列(6):样式
  7. 点击User Profile Service Application 报错
  8. java 文件与base64_java之文件与base64字符之间的相互转换
  9. 还在从零开始搭建项目?手撸了款快速开发脚手架!
  10. 关于静态成员变量的谈论
  11. 使用解码逻辑创建YOLO Core ML对象检测器(四)
  12. 中介者模式android,Android[高级教程] 设计模式之六 中介者模式(二)
  13. html生成器_这些文案生成器,你知道几个?
  14. 抢红包算法 c语言,微信红包的随机算法是怎样实现的?
  15. IC卡CPU卡32位单片机S3系列接触式读写模块分类与性能攻略
  16. sw工程图导出bom_SOLIDWORKS如何快速生成BOM表格
  17. 寒冬不怕!印度互联网市场潜力巨大
  18. activeMQ启动失败61616port被占用问题
  19. 红孩儿编辑器的模块设计文档目录
  20. 《python3网络爬虫开发实战》学习笔记:pc与安卓代理证书都安装好但是无法监听——记自己的踩坑路径

热门文章

  1. Android部分手机Activity跳转可以看到桌面
  2. MySQL中查询两个日期之间的天数
  3. SpringCloud Eureka Server 源码
  4. AE中将图层作为蒙版使用
  5. 2011年1月15日
  6. Proxifier v4* 配置文件路径
  7. 中年人可以学计算机吗,中老年学电脑的好处
  8. php.ini中的cgi.fix_pathinfo选项
  9. android 调用支付宝充值,提示系统繁忙,4000
  10. Fruit Ninja