有关进程控制的问题

有关进程控制的问题

代码如下:
   
#include<stdio.h>
   main()
   {
      int i;
      while ((i=fork())==-1);  
      printf("i=%d\n",i);   
      if (i)
         printf("It is a parent process!");  /
      else
         printf("It is a child process!");   
   }
编译执行输出如下:

i=0                     
It is a child process!  
i=6980                  
It is a parent process!

请问:

1。是否子进程先于父进程执行,或者是两者同时执行?
2。为什么输出的两个 i 值不同?

先行谢过!
这个这个...我想大哥您不应该把这个主题放在shell栏吧   
哦……哦!
抱歉!
这里近些,就发这里了。还请指点!
对c不太了解,俺先看看...
有结果了就贴上来...

弱弱的问一句:为什么while子句后边有个分号?
1.子进程和父进程的执行顺序是不确定的,我做过实验,一般是子进程先执行,但偶尔也会父进程先执行。
2.两个I值不同?当然不同了,fork对于子进程返回的是0,对父进程返回的是子进程ID号,所以两个i一个表示是子进程(有0为证),一个表示是父进程(有进程号6980)为证。
while子句创建子进程,如果创建失败则反复创建
我又修改了一下代码:
#include<stdio.h>                        
main()                                   
{                                       
  int i;                                 
  while ((i=fork())==-1);               
  printf("i=%d\n",i);                    
  if(i)                                 
  {                                      
    int j;                              
    while ((j=fork())==-1);              
    printf("j=%d\n",j);                  
    if(j)                                
      printf(" a in the parent process\n"
    else                                 
      printf(" b in another child process
  }                                      
  else                                   
    printf(" c in a child process\n");   
}                                       
输出结果如下:   
i=0                        
c in a child process      
i=18734                     
j=0                        
b in another child process
j=18735                     
a in the parent process   

这里i=18734和j=18735应该都是属于父进程的,对吗?

i=0表示第一个子进程创建成功
j=0表示第二个子进程创建成功
i=18734和j=18735分别表示两个子进程的ID号

对否?
this is some basic knowledge of unix/linux system call, the answer is already in the reference book.

btw, the linux system call is a bit diff from traditional unix, there is some variance in the posix standard that linux implemented.
呵呵,小弟初学乍练,很多虽然很基本的东西但还是不太明白。还请诸位高手多多指点。