易截截图软件、单文件、免安装、纯绿色、仅160KB

linux下杀子进程(调用kill)

在linux里面,fork()一个子进程,结果怎么都杀不掉。由于不是root用户,使用kill -9 pid,也没用。
在ps -awt的时候总是能看到那个子进程。我在子进程里面起了个shell。
后来google了一下,发现要调用waitpid才可以。
这个是所谓的zombie(僵尸进程)
引用一段:
在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill -9也不能杀死僵尸进程。补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程。
  僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程.(zombie)进程
附测试代码:
 #include <sys/types.h> 
#include <unistd.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <string.h>
#include   <sys/types.h>  
#include   <signal.h>
int main( void ) 

    FILE   *stream; 
    FILE    *wstream;
    char   buf[1024],buf1[1024];
    int i,j,pid;
   
    memset( buf, '\0', sizeof(buf) );//初始化buf,以免后面写如乱码到文件中
   
    pid = fork();
    if(pid>0)
    {
     printf("parant start!%d\n",pid);
     sleep(2);
     //sprintf(buf,"kill -9 %d\n",pid);
     if (j = kill(pid,SIGTERM) < 0)//SIGKILL
       printf("parent system failed!\n");
 else
   printf("system:%s\n,result:%d\n",buf,j); 
     printf("parant end!\n");
 pid=wait(NULL);
        printf("I catched a child process with pid of %d\n",pid);
  &nb


相关文档:

Linux设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

linux移植开发简单步骤

Linux移植开发 准备工作: 准备交叉编译工具链:这里我们选择DENX软件工程提供的ELDK交叉编译环境,参考地址:http://ftp.denx.de/pub/eldk/4.2/,我们使用其中的一套工具。准备工作步骤如下: 1. 建立工作文件夹NewMsg2410,并建立子目录sources works tools mkdir NewMsg2410 mkdir sources works tools 2. 准备arm- ......

Android中支持的linux命令

1、启动emulator(模拟器)
     在Dos中输入emulator后回车即可启动emulator,前提是你把android sdk 的tools目录添加到了环境变量里面;否则的话,你必须先进入android sdk的tools目录下,再输入emulator命令。
2、查看android支持的linux 命令
      待模拟器启动好之后,在Dos中输 ......

Linux页框管理

在前面的博文里,我们讲解了基于80x86体系的Linux内核分段和分页机制,并详细地讨论了Linux的内存布局。有了这些基本概念以后,我们就来详细讨论内核如何动态地管理那些可用的内存空间。
对于80386这种32位的处理器结构,Linux采用4KB页框大小作为标准的内存分配单元。内核必须记录每个页框的当前状态,例如,区分哪些页框 ......

linux的简单sh程序设计

干嘛学习 Scripts
这个问题可有趣的很了,我为什么要学习 scripts 呢?不要学可不可以呀!?呵呵!如果您只想要『会用』 Linux 就好的话,那么这一个部分确实可以先跳过去不看也没关系,不过,如果您想要更加的了解与控制 Linux ,使 Linux 运作更顺畅之外,还可以高枕无忧的让你的 Linux Server 在 Internet 上面提供相关 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号