我正在尝试检查父进程和子进程的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;
}
答案 0 :(得分:1)
您尚未调用getpid
或getppid
函数,只是将它们转换为整数。你需要添加括号。
printf("parent process - my pid: %d, my parent's pid: %d, my child's pid: %d\n", getpid(), getppid(), pid);
请注意,打印的错误值远远超出PID范围typically 32k。您的父进程正在打印正确的子PID,因为该值是递给您的整数。