http://wenku.baidu.com/view/9bbd27da50e2524de5187ea1.html 好好看看这个例子
http://blog.csdn.net/lingdxuyan/archive/2009/12/12/4993883.aspx
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc,char ** argv)
{
pid_t child_id;
int i=2;
if((child_id = fork()) == 0)
{
/*child process*/
while(i > 0)
{
printf("I am a child process/n");
sleep(1);
i--;
}
}
/*当子进程走完上面i--后也会走到此处,所以Child process also come here.会打印两遍*/
printf("Child process also come here./n");
/*parent process*/
while(1)
{
printf("I am parent./n");
sleep(1);
}
return 0;
}
另外一个方法:
int main(int argc,char ** argv)
{
pid_t child_id;
int i=2;
if((child_id = fork()) == 0) /*在子进程中*/
{
/*child process*/
while(i > 0)
{
printf("I am a child process/n");
sleep(1);
i--;
}
}
else /*在父进程中*/
{
printf("I am parent./n");
}
return 0;
}
相当于:
int main(int argc,char ** argv)
{
pid_t child_id;
int i=2;
child_id = fork() /*创建子进程*/
if(child_id == 0) /*在子进程中*/
{
/*child process*/
while(i > 0)
{
printf("I am a child process/n");
sleep(1);
i--;
}
}
else /*在父进程中*/
{
printf("I am parent./n");
}
return 0;
}