当前位置:嗨网首页>书籍在线阅读

03-进程终止的细节

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

25.2 进程终止的细节

无论进程是否正常终止,都会发生如下动作。

  • 关闭所有打开文件描述符、目录流(18.8节)、信息目录描述符(参考手册页catopen(3)和catgets(3)),以及(字符集)转换描述符(见iconv_open(3)手册页)。
  • 作为文件描述符关闭的后果之一,将释放该进程所持有的任何文件锁(第55章)。
  • 分离(detach)任何已连接的System V共享内存段,且对应于各段的shm_nattch计数器值将减一。(参考48.8节。)
  • 进程为每个System V信号量所设置的semadj值将会被加到信号量值中(参考47.8节)。
  • 如果该进程是一个管理终端(terminal)的管理进程,那么系统会向该终端前台(foreground)进程组中的每个进程发送SIGHUP信号,接着终端会与会话(session)脱离。34.6节将就此进行深入讨论。
  • 将关闭该进程打开的任何POSIX有名信号量,类似于调用sem_close()。
  • 将关闭该进程打开的任何POSIX消息队列,类似于调用mq_close()。
  • 作为进程退出的后果之一,如果某进程组成为孤儿,且该组中存在任何已停止进程(stopped processes),则组中所有进程都将收到SIGHUP信号,随之为SIGCONT信号。34.7.4节将深入讨论这一点。
  • 移除该进程通过mlock()或mlockall()(50.2节)所建立的任何内存锁。
  • 取消该进程调用mmap()所创建的任何内存映射(mapping)。