首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

对fork()的理解解决思路

2012-03-23 
对fork()的理解对fork()始终还是不太明白,看看这样理解是否正确1个父进程(A)中调用1次fork()函数,该fork()

对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());    }} 

热点排行