免费注册 查看新帖 |

Chinaunix

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

关于在一个父进程建立多个子进程的问题(fork相关问题) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-10-05 16:49 |只看该作者 |倒序浏览
虽然我刚接触linux,但是我发现它让人不得不着迷,问一个粗浅的问题,请大家帮忙!
下面是我自己试验的一个小程序段:
main()
{
   int  pid, child_id, child_id_two;
    pid = getpid();
    printf("process ID = %d\n", pid);
  
   if ((child_id=fork()) != 0) { /* 建立第一个子进程 */
        pid = getpid();
        printf("process ID (parent) = %d\n", pid);
        printf("parent process complete.\n";
    }
    else if ((child_id_two=fork()) == 0) { /* 建立第二个子进程 */
        /* 第一个子进程的输出*/
        pid = getpid();
        printf("process ID (child 2) = %d\n", pid);
        printf("child2 process complete.\n";
        printf("child id 2 = %d\n", child_id_two);
    } else {
        /* 第一个子进程的输出*/
        pid=getpid();
        printf("process ID (child) = %d\n", pid);
        printf("child process complete.\n";
        printf("child id 1 = %d\n", child_id);
    }
}

程序的执行结果是:

process ID = 29643
process ID (child 2) = 29645
child2 process complete.
child id 2 = 0
process ID (child) = 29644
child process complete.
child id 1 = 0
process ID (parent) = 29643
parent process complete.

我有两点不太清楚:
1、我建立的这两个子进程都是同一个父进程的子进程么?
   还是,第二个子进程是第一个子进程的子进程?

2、如果这两个子进程都是同一个父进程的子进程,那么它们的id号应该是不同  
   的呀,可是这里child id 2 和child id 1都是零,那么这两个子进程之间如何
   相互区分呢? 这是为什么呢?

再一次感谢大家。

论坛徽章:
0
2 [报告]
发表于 2004-10-05 19:42 |只看该作者

关于在一个父进程建立多个子进程的问题(fork相关问题)

1 用code标记把自己的代码包起来!
2 贴到C/C++版去!

论坛徽章:
0
3 [报告]
发表于 2004-10-06 08:05 |只看该作者

关于在一个父进程建立多个子进程的问题(fork相关问题)

code标记怎么用啊,我现这样贴过去
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP