对fork()的理解
对fork()始终还是不太明白,看看这样理解是否正确
1个父进程(A)中调用1次fork()函数,该fork()函数若创建成功则返回2次,即0/正数值;
当返回0时,则该父进程(A)下创建了一个子进程(B),子进程(B)向其自身返回自身ID值;
当返回正数值时,该父进程(A)下仍然创建同一个子进程(B),但该子进程(B)则向父进程(A)返回其ID值;
所以在以下函数中,调用1次返回2次,每次执行以下2条printf()语句,
因此获得值为2个子进程的ID和2个父进程的ID:
#include<stdio.h>
main(){
fork();
printf("child id%d\n",getpid());
printf("parent id%d\n",getppid());
}
------解决方案--------------------
给你改几行代码,就好懂了。
C/C++ code
#include <stdio.h>
#include <stdlib.h>
main()
{
pid_t id = fork();
sleep(10);
if(id==0)
{
printf("--- id%d\n",id);
printf("---child id%d\n",getpid());
printf("---parent id%d\n",getppid());
}
else
{
printf("id%d\n",id);
printf("child id%d\n",getpid());
printf("parent id%d\n",getppid());
}
}