日期:2014-05-16  浏览次数:20598 次

有关进程,信号的问题,向各位大虾求教。。。
C/C++ code
pid_t pid;
void handle(int signo){
 /*****************************问题所在********************************
  *多执行几次pid会出现不同的结果0,或者子进程的pid
 *一个是fork返回到子进程的值,一个是返回到父进程的值
  *问题:这个地方的pid不应该是子进程的pid值么,为什么可能为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(ppid,SIGUSR2);

        pause();
        exit(0);
    }    
    wait(&stat);
    return 0;
}


------解决方案--------------------
*问题:这个地方的pid不应该是子进程的pid值么,为什么可能为0呢???
在子进程里就是pid就是0
------解决方案--------------------
kill(ppid,SIGUSR2);你的ppid在哪定义的?


------解决方案--------------------
才发现,在你的上个贴子里我把问题搞清楚了,就是写时复制的问题。嘿嘿~
------解决方案--------------------
不知所以然 mark~~~