免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1595 | 回复: 4
打印 上一主题 下一主题

fork父子进程不解。。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-24 16:16 |只看该作者 |倒序浏览
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>

  4. int main (int argc, char *argv[]) {
  5.    pid_t childpid = 0;
  6.    int i, n;

  7.    if (argc != 2){   /* check for valid number of command-line arguments */
  8.       fprintf(stderr, "Usage: %s processes\n", argv[0]);
  9.       return 1;
  10.    }     
  11.    n = atoi(argv[1]);  
  12.    for (i = 1; i < n; i++)
  13.       if (childpid = fork())
  14.          break;

  15.    printf("i:%d  process ID:%ld  parent ID:%ld  child ID:%ld\n",
  16.            i, (long)getpid(), (long)getppid(), (long)childpid);
  17.    return 0;
  18. }
复制代码


编译运行后的结果为:

  1. /usr]simple 5
  2. i:5  process ID:4484  parent ID:4483  child ID:0
  3. i:1  process ID:4480  parent ID:4436  child ID:4481
  4. i:2  process ID:4481  parent ID:1  child ID:4482
  5. i:3  process ID:4482  parent ID:1  child ID:4483
  6. i:4  process ID:4483  parent ID:1  child ID:4484

复制代码


i---1后产生的子进程为4481,i---2中显示的 此进程为4481,但父进程却是1,i--3..也是同样的现象,请问 此时的子进程的父进程为什么不是 上个进程的id号,却是 操作系统的 进程?!

论坛徽章:
0
2 [报告]
发表于 2005-11-24 16:24 |只看该作者
无论你是在什么书上看到fork这个函数的,那就把那本书的这章读完,看看自己能不能解决。。

论坛徽章:
0
3 [报告]
发表于 2005-11-24 20:03 |只看该作者
不是它父亲,是他老祖了。
它父亲早死了,init看它可怜,收养了它。

论坛徽章:
0
4 [报告]
发表于 2005-11-24 20:31 |只看该作者
看来比较乱!
孤儿是因为父进程先执行完了!

[ 本帖最后由 x911 于 2005-11-25 09:41 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2005-11-25 00:12 |只看该作者
艾, 好多的孤儿啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP