设置一个全局变量保存进程id,为何在另一个函数中kill的时候id号有变化?
大海方舟 2014-08-18 03:52:20 定义了一个全局变量 pid_t childs_pid;
在函数test中获取子进程id号
void test(void)
{
pid_t pid;
char sPlay[100]="play ";
pid = fork();
if(pid == 0)
{
childs_pid = getpid();
printf("childs_pid = %d\n",childs_pid);
if((pid=fork())==0)
{
system(sPlay);
exit(0);
}
if (waitpid(pid, NULL, 0) != pid)
{
fprintf(stderr,"Waitpid error!\n");
exit(-1);
}
exit(0);
}
}
打印出来得到childs_pid = 995
然后在另外一个函数stop_test中kill
void stop_test(void)
{
pid_t pid;
char cmd[100];
sprintf(cmd,"kill -9 %d",childs_pid);
printf("kill childs_pid %d\n",childs_pid);
system(cmd);
}
打印出来的是kill childs_pid 0
为什么childs_pid发生了变化,按正常来讲childs_pid应该等于995,此处为什么变为0了?求指点