zoukankan      html  css  js  c++  java
  • 僵尸进程

         僵尸进程就是父进程fork之后并没有wait子进程。在子进程退出的时候,内核释放该进程所有的资源,比如文件描述符,内存,等等,但是依然为该进程保留一定的信息,只有该进程的父进程wait之后才会释放掉这些保留的信息。如果父进程没有wait,那么子进程就变成了僵尸进程。在高并发的服务器中,僵尸进程会有很大的危害。如果僵尸进程过多,那么就会有大量的进程号被僵尸进程占用,但是系统所能使用的进程是有限的。如果僵尸进程多到连新进程的进程号都没法提供,那么服务器就会一直处于拒绝状态了。

         但是高并发服务器的父进程肯定会fork许多子进程,而且有可能父进程不需要知道任何子进程的结束信息,如果还wait每个子进程的话,肯定会造成资源的大量良妃。针对这种情况,有一个非常简单却非常有效的办法。当子进程exit()的时候,内核会向父进程发送一个SIGCHLD信号。将这个信号的处理方式设置为SIG_IGN,那么就可以让父进程忽略子进程发送的SIGCHLD信号了。

  • 相关阅读:
    Two Sum II
    Subarray Sum
    Intersection of Two Arrays
    Reorder List
    Convert Sorted List to Binary Search Tree
    Remove Duplicates from Sorted List II
    Partition List
    Linked List Cycle II
    Sort List
    struts2结果跳转和参数获取
  • 原文地址:https://www.cnblogs.com/NeilHappy/p/2956289.html
Copyright © 2011-2022 走看看