- 论坛徽章:
- 0
|
请教:怎样使用signal
我写了这样一个程序发现kill掉一个子进程后父进程就不断的执行重新创建新的子进程如下代码
#include <signo.h>;
void testchild(signo)
int signo;
{
printf("the child is killed \n"
wait();
}
main()
{
int iLoop;
struct sigaction act;
int isig;
int iforkval;
act.sa_flags=SA_SIGINFO;
act.sa_sigaction=(void *) testchild;
isig=SIGCHLD;
for (iLoop=0;iLoop<10;iLoop++);
{
iforkval=fork();
if (iforkval==0)
{ break;}
}
if (iforkval!=0)
{
printf("pid=%d,this is parent\n",getpid());
sleep(1);
if (sigaction(isig,&act,NULL)>;=0)
{
iforkval=fork();
if (iforkval==0)
{printf("crate the fork\n" // (1)
break;
}
}
}}
if (iforkval==0)
{
while(1)
{
printf("pid=%d,this is child\n",getpid());
sleep(10);
}
}
}
使用kill 命令kill掉一个子进程 后父进程不断的执行 (1)出的语句,创建很多的子进程,请问这时为什么 |
|