为什么子进程和父进程的pid相同?

时间:2015-10-14 04:06:36

标签: process fork parent-child pid

我正在尝试检查父进程和子进程的pid,但每当我运行程序时,我获得的是两者的pid值相同。

从我所知道的getpid获取当前进程的pid。我错了吗? same valur of pid for both processes

    #include <sys/types.h>
    #include <stdio.h>
    #include <unistd.h>


    int main (void){

pid_t pid= fork(); 
switch (pid){ 
case -1: 
    perror("fork");
    exit(1);
        break;
case 0 :
    printf("Child Process - my pid: %d, my parent's pid: %d\n", (int)getpid, (int)getppid);
    break;
default : 
    wait();
    printf("parent process - my pid: %d, my parent's pid: %d, my child's pid: %d\n", (int)getpid, (int)getppid, (int)pid);
    break;}


    printf("End of fork\n");
    return 0;
    }

1 个答案:

答案 0 :(得分:1)

您尚未调用getpidgetppid函数,只是将它们转换为整数。你需要添加括号。

printf("parent process - my pid: %d, my parent's pid: %d, my child's pid: %d\n", getpid(), getppid(), pid);

请注意,打印的错误值远远超出PID范围typically 32k。您的父进程正在打印正确的子PID,因为该值是递给您的整数。