多进程问题

简介: 一、概述  孤儿进程:父进程退出,而它的子进程仍在运行,那么这些子进程将成为孤儿进程,孤儿进程将被init进程(进程id)为收养,并由init进程对它们完成状态的收集工作  僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有wait或waitpid获取子进程的状态信息,那么...

一、概述

  孤儿进程:父进程退出,而它的子进程仍在运行,那么这些子进程将成为孤儿进程,孤儿进程将被init进程(进程id)为收养,并由init进程对它们完成状态的收集工作

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

二、如何避免出现僵尸进程

  • 通过signal(SIGCHLD, SIG_IGN)通知内核对子进程的结束不关心,由内核回收
  • 通过SIGCHLD的注册函数来处理信号,如果一下子很多信号发出,那么会有丢失信号的问题,因为内核发信号不排队....
  • 孤儿进程的方式,通过fork setsid实现

三、Daemon守护进程

  1. fork子进程、然后父进程退出,这已经构成了基本的daemon,但子进程还在父进程的回话里面
  2. 子进程调用setsid,使子进程成为新的会话组长,但新的会话组长可申请控制终端
  3. 再次fork一个子孙进程,干掉子进程,保留孙子进程
  4. 切换工作目录,关闭stdin\stdout\stderr的句柄,umask  
相关文章
|
6月前
|
调度
多进程并行执行
多进程并行执行
53 0
聊聊python多线程与多进程
为什么要使用多进程与多线程呢? 因为我们如果按照流程一步步执行任务实在是太慢了,假如一个任务就是10秒,两个任务就是20秒,那100个任务呢?况且cpu这么贵,时间长了就是浪费生命啊!一个任务比喻成一个人,别个做高铁,你做绿皮火车,可想而知!接下来我们先看个例子:
|
NoSQL 关系型数据库 MySQL
多进程与多线程
多进程与多线程
87 0
|
Java C++ Python
Python多线程与多进程
全局解释器锁(GIL)导致了Python多线程无法利用多核CPU并发执行。引入GIL,是为了解决多线程之间数据完整性和状态同步的问题,简化了Python对共享资源的管理;但是也降低了并发编程的性能。
16779 3
Python多线程与多进程
|
Go 调度 Python
多线程与多进程(一)
多线程与多进程
106 0
多线程与多进程(一)
|
Unix Linux 调度
|
Java C语言 Python
多线程与多进程(三)
多线程与多进程
122 0
多线程与多进程(三)
|
消息中间件 Web App开发 并行计算
彻底理解 进程、线程、多进程、多线程
面试经常被问到的问题,今天给大家总结一下📌
171 0
彻底理解 进程、线程、多进程、多线程
|
开发者 Windows Python
多进程的使用| 学习笔记
快速学习多进程的使用
多进程的使用| 学习笔记
一日一技:协程与多进程的完美结合
一日一技:协程与多进程的完美结合
220 0