linux fork pid问题,大家帮帮忙,谢谢
程序代码:#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
pid_t fork_id;
int i, j;
printf("Do you want to create a new child process?(1:yes,2:no)\n");
scanf("%d",&i);
if(i == 1)
{
fork_id = fork();
if(fork_id < 0)
{
printf("error!!!!\n");
}
else if( fork_id == 0)
{
wait();/* 先等待子进程运行结束 */
printf("main:main pid is %d\n",getpid());/* 这里应该是输出main进程的pid */
}
else
{
printf("child:fork_id is %d\n",fork_id);/* 这里是fork函数的返回值,子进程的pid */
printf("child:pid is %d\n",getpid());/* 这里应该也是输出子进程的pid */
printf("child:main pid is %d\n",getppid());/* 这里应该是输出父进程的pid,也就是main进程的pid */
//execl("/bin/ls","ls","/",NULL);
}
}
/* 以上注释部分都是我的推测,但运行结果却不是这样的,fork_id的值不等于在else分支中getpid()得到的值,main进程id也不一样,为什么会这样呢?
*child:fork_id is 4461
*child:pid is 4459
*child:main pid is 2828
*main:main pid is 4461
*
*/
else if(i == 2)
{
printf("this is 2\n");
}
else
{
printf("the number of you enter is error!!!please enter again\n");
}
return 0;
}





瞬间醒悟...谢谢,这样就完全符合了,看了半天,没想到是这儿