Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3976350
  • 博文数量: 408
  • 博客积分: 10227
  • 博客等级: 上将
  • 技术积分: 9820
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-17 21:48
个人简介

非淡泊无以明志,非宁静无以致远

文章存档

2022年(1)

2021年(1)

2020年(2)

2019年(5)

2018年(4)

2017年(3)

2016年(24)

2015年(8)

2014年(7)

2013年(3)

2012年(1)

2011年(23)

2010年(179)

2009年(147)

分类: LINUX

2009-11-21 18:20:10

 

Unix OS中,通过执行系统调用exit来终止一个进程。进程可以显示的调用exit系统调用来终止一个进程,也可以通过在程序结束时的return来实现(startup routine调用exit当一个C程序从main函数返回时)。

调用exit方式如下:

        exit(status);

status是返回给父进程的终止code。当一个进程exit后,这个进程处于zombie state

exit系统调用的执行发生以下事件:

1.清除当前进程的所有信号处理函数。

2.如果当前进程是和终端关联的“进程组组长”,则会向每个组内进程发送hang-up signal,并且把这些成员的进程组设置为0

3.通过内核内部算法关闭当前进程所有打开的文件描述符,并且释放当前目录所关联的inode;如果存在current (charged)root,也将其释放通过算法iput

4.为进程释放所有的region以及关联的memory

5.计算进程机器子进程执行的时间(user mode kernel mode),并把记录写到一个全局的accounting file

6.将进程的状态改变为zombie,并将自己的所有的子进程的父进程ID设置为1init);如果有孩子的状态是zombie,向init进程发SIGCHLD信号,以清除子进程的process table slot

7.exiting进程向自己的父进程发送SIGCHLD信号。

8.进行context switch,调度其他非zombie进程(本进程已经是zombie)。

阅读(1860) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~