Chinaunix

标题: 关于在一个父进程建立多个子进程的问题(fork相关问题) [打印本页]

作者: duoduozhu    时间: 2004-10-05 16:49
标题: 关于在一个父进程建立多个子进程的问题(fork相关问题)
虽然我刚接触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都是零,那么这两个子进程之间如何
   相互区分呢? 这是为什么呢?

再一次感谢大家。
作者: JohnBull    时间: 2004-10-05 19:42
标题: 关于在一个父进程建立多个子进程的问题(fork相关问题)
1 用code标记把自己的代码包起来!
2 贴到C/C++版去!
作者: duoduozhu    时间: 2004-10-06 08:05
标题: 关于在一个父进程建立多个子进程的问题(fork相关问题)
code标记怎么用啊,我现这样贴过去




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2