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释放进程资源表。

  • 相关阅读:
    Ubuntu 8.04安设nVidia新版表现驱动
    特性化设置你的linux环境
    Ubuntu 8.04 去失踪文泉驿的点阵字形的方法
    Fedora Nightlife项目 扶助较劲争论机的空闲
    Ubuntu显卡驱动不精确,进入黑屏的处置装备
    Linux中翻开带flash网页主动封锁的处理办法
    Firefox 3 Alpha 5
    Ubuntu 8.04无法正常关机成就处置惩罚
    Redhat Enterprise Linux 5.2 公布了
    KOffice 1.6.3
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/9216000.html
Copyright © 2011-2022 走看看