日期:2014-05-16 浏览次数:20715 次
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((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); }