23,125
社区成员
发帖
与我相关
我的任务
分享
pid_t pid;
void handle(int signo){
/*****************************问题所在*************************************************
*多执行几次pid会出现不同的结果0,或者子进程的pid
*一个是fork返回到子进程的值,一个是返回到父进程的值
*问题:这个函数是父进程执行的,pid不应该是fork返回到父进程的值么,为什么可能为0呢???
*请各位指教。
****************************************************************************************/
printf("Current time:%d\n",pid);
kill(pid,SIGUSR1);
}
int main(){;
int i;
int stat;
signal(SIGCLD,SIG_IGN);
signal(SIGUSR1,SIG_IGN);
signal(SIGUSR2,handle);
pid=fork();
if(pid<0){
perror("fork");
exit(-1);
}
else if(pid==0){
kill(getppid(),SIGUSR2);
pause();
exit(0);
}
wait(&stat);
return 0;
}
else if((pid ==0){
g_tmpPid = pid;
kill(getppid(),SIGUSR2);
pause();
exit(0);
}
else if((g_tmpPid = pid)==0){
kill(getppid(),SIGUSR2);
pause();
exit(0);
}
static void handle(int signo){
printf("Current time:%d\n",g_tmpPid);
kill(pid,SIGUSR1);
}
else if((pid ==0){
g_tmpPid = pid;
kill(getppid(),SIGUSR2);
pause();
exit(0);
}