|
[php]
# include <signal.h>
static void sig_handler(int);
int main(void)
{
int i,parent_pid,child_pid,status;
if(signal(SIGUSR1,sig_handler)==SIG_ERR)
printf("error");
if(signal(SIGUSR2,sig_handler)==SIG_ERR)
printf("error2");
parent_pid=getpid();
if((child_pid=fork())==0)
{ //子进程
kill(parent_pid,SIGUSR1); //产生信号 给 parent_id
for(;;) pause(); //??
}
else
{
kill(child_pid,SIGUSR2); //为什么此句不执行?
printf(" arent: Terminating child ...");
kill(child_pid,SIGTERM);
wait(&status);
printf("done\n");
}
}
static void sig_handler(int signo)
{
switch(signo)
{
case SIGUSR1:
printf(" arent:Received SIGUSR1 \n");
break;
case SIGUSR2:
printf("Child:Received SIGUSR2 \n");
break;
default:break;
}
return;
}
[/php] |
|