zoukankan      html  css  js  c++  java
  • 14僵尸进程方式3 4补充

    前面的进程控制2,介绍了僵尸进程,和解决方式4种中的两种。下面再补充两种。

    解决方式:

    3:忽略SIGCHLD信号

    父进程设置忽略 SIGCHLD信号,子进程结束自动释放进程表资源

    忽略SIGCHLD信号:

    signal(SIGCHLD, SIG_IGN)

    4:捕获SIGCHLD信号

    父进程捕获SIGCHLD信号,并在捕获函数代码中 执行wait()

    处理SIGCHLD信号:

    void pFun(int nSignal) 

    signal(SIGCHIL, pFun)

    僵尸进程:

    void testZomb()

    {

          pid_t pid=fork();

          if(pid==0)

          {

               printf("this is a child:%d ",getpid());

               _exit(0);

          }

          else

          {

               printf("this is a parent:%d ",getpid());

               while(1);

          }

    }

    rowe       3440   3110 92 23:04 pts/0    00:00:08 ./main

    rowe       3441   3440  0 23:04 pts/0    00:00:00 [main] <defunct>

    <defunct>说明就是僵尸进程,并且无法使用kill命令进行终止,也无法对其进行任何操作。

    忽略SIGCHLD信号方式:

    void testZomb()

    {

          pid_t pid=fork();

          if(pid==0)

          {

               printf("this is a child:%d ",getpid());

               _exit(0);

          }

          else

          {

               //父进程忽略SIGCHLD

               signal(SIGCHLD,SIG_IGN);

               printf("this is a parent:%d ",getpid());

               while(1);

          }

    }

    捕获SIGCHLD信号方式:

    void func(int sig)

    {

          printf("receive signal:%s[%d] ",strsignal(sig),sig);

          wait(NULL);

    }

    void testZomb()

    {

          pid_t pid=fork();

          if(pid==0)

          {

               printf("this is a child:%d ",getpid());

               _exit(0);

          }

          else

          {

               //父进程对SIGCHLD进行处理

               signal(SIGCHLD,func);

               printf("this is a parent:%d ",getpid());

               while(1);

          }

    }

    wait结束后,由init释放进程资源表。

  • 相关阅读:
    面试2
    面试总结
    谈谈扫码支付的实现流程
    从产品分类、模块功能和业务流程,了解支付产品服务的设计
    【提现】的业务流程
    APP测试点归纳
    安全测试的思路
    一 大型网站架构演化(大型网站技术架构原理)
    Tomcat服务器原理详解
    Tomcat目录结构详解
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/9216000.html
Copyright © 2011-2022 走看看