linux中子进程,linux下杀子进程(调用kill)

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

#include

#include

#include

#include

#include  

#include  

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

相关文档:

例一:发送Signaling Packet:

Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.

多个Command可以在一个C-frame(control frame)中发送。

如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......

用Apache配置虚拟主机

apache不仅支持基于域名的虚拟主机,还支持基于IP的虚拟主机,每一个apache虚拟主机都有单独的配置文件在/etc/apache2/sites-available中,default是默认的虚拟主机,这个虚拟主机在安装时已经被链接到 /etc/apache2/sites-enabled 目录下,在浏览器中访问服务器IP地址,将会出现 “It Works&rd ......

Linux中tty、pty、pts的概念区别

基本概念:

1> tty(终端设备的统称):

tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。

终端是一种字符型设备,它有多种类型,通常使用tty来简称各 ......

一、引言

想使用Linux已经很长时间了,由于没有硬性任务一直也没有系统学习,近日由于工作需要必须使用Linux下的MySQL。本以为有Windows下使用SQL Server的经验,觉得在Linux下安装MySql应该是易如反掌的事,可在真正安装和使用MySQL时走了很多弯路,遇见很多问题,毕竟Linux 和Windows本身就有很大区别。为了让和我一 ......

信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。

信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的 ......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值