标题: C 杀死子进程的子进程
zhouliang55
新生入学
Rank: 1
注册用户



UID 182250
精华 0
积分 0(积分有什么用?)
帖子 25
阅读权限 10
注册 2007-3-3
状态 离线
发表于 2007-8-16 10:41  资料  个人空间  短消息  加为好友 
C 杀死子进程的子进程

我现在的代码大概如下:
F)_XW}*X%Qif((child1_pid=fork())==0)
GFP n2F4A ULinux伊甸园论坛{+|eB i_&d
     while(1){:k:d0|s3}8b
           if(child2_pid){#r7J2P S5?v.c#U
              kill(child2_pid,SIGKILL);Linux伊甸园论坛*H'y u[+E,Fr+b
              if(waitpid(child2_pid,NULL,0)<0)
E;M j4G]www.linuxeden.com                     printf("kill child2_pid error=%d\n",child2_pid);              i]r7xRl
              elseLinux伊甸园论坛$G;g"AY `AC:`f
                      child2_pid=0;
"Q0^7gm'ge          }
GBzD uFa5R          if((child2_pid=fork())<0){
l:F A%m3LV                   printf("child2_pid fork error\n");Linux伊甸园论坛XfEiT&Zd
          }else"EQN2H,vw
          if(child2_pid==0){
i.gU"G~               if(execlp("ls ","ls",dir_name1,(char *)0)<0)www.linuxeden.com$S9R7glF
O1Uf

               printf("exec show picture error\n");www.linuxeden.com2f0Zt}        a*f
        exit(0);   
k6ttMg/N gP,U           }elseH;q:g7I(C6vE*y
           if(child2_pid){{.p
~^0`7Y\mXh

                     sleep(3);
1wVeS.r!z/rjwww.linuxeden.com           }
9p-qG+Oj2Y wwww.linuxeden.com           XS&G`6n4mnB0b
     }Linux伊甸园论坛 ]/Q.@*X|KF
}else
B^ }:q8u)O        RC%\www.linuxeden.comif(child1_pid){
I&[I7o.P0U3QIl D        Q        g      other_process();
l        ~1i{`MK}]S9J(qU'zP~


k!Qv/~B T5w7`9|Sqwww.linuxeden.com
在这里我的子进程里做了一个while(1)的循环,每隔3s钟显示系统某目录下的内容,不过在这里我有个问题想请教大家,因为我在父进程里一定条件下会调用kill杀死child1_pid进程,这个时候child2_pid 由于是child1_pid的子进程,请问child2_pid进程会死亡吗?child2_pid是随隔一段时间变化的,他会不会编程僵死进程啊?

顶部
flag
版主
Rank: 7Rank: 7Rank: 7
版主



UID 19801
精华 1
积分 28(积分有什么用?)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
发表于 2007-8-17 09:45  资料  个人空间  短消息  加为好友 
你没有抓住问题的关键,关键是如果不回收的话,是会僵死的。。。。。





上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
顶部
fishen
新生入学
Rank: 1
注册用户



UID 118008
精华 0
积分 0(积分有什么用?)
帖子 1
阅读权限 10
注册 2005-4-18
状态 离线
发表于 2007-8-18 17:22  资料  个人空间  短消息  加为好友 
不会,要回收,child2_pid是随隔一段时间变化,所以,不会

顶部
 



当前时区 GMT+8, 现在时间是 2008-5-17 06:11

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.062262 second(s), 5 queries

清除 Cookies - 联系我们 - Linux伊甸园 - Archiver - WAP