Linux中进程的创建

一、创建方式:
1.fork
2.vfork

二、区别:
fork: 创建的父子进程执行顺序无先后之分,执行顺序不一定。
vfork: 创建的父子进程,父进程必须要等子进程退出后才能执行。

三、fork创建进程使用例程

include <stdio.h>
#include 

//vfork创建的子进程,必须等子进程运行完毕,才能执行父进程!
//fork创建的子进程,子进程和父进程同时运行。

int main(int avgc,char **argv)
{

    pid_t pid;
	pid=fork();  //创建进程
  /*
    从创建进程开始,下面的内容子进程和父进程每人一份。子进程只执行pid==0的程序,
   父进程执行pid>0的程序。两个进程互不干扰,各自执行各自的程序。
  */
	int n=10;
	if(pid==0)
	{
      while(1){
        printf("我是子进程:%d\n",n);
		sleep(1);
	   }
	}
	
	else if(pid>0)
	{
       while(1)
       	{
       	  n++;
          printf("我是父进程:%d\n",n);
		  sleep(1);
	    }
	}
	
	else
	{
       printf("error\n");
	}
	
    return 0;

四、vfork创建进程使用例程

#include 
#include 
#include 

//vfork创建的子进程,必须等子进程运行完毕,才能执行父进程!
//fork创建的子进程,子进程和父进程同时运行,执行顺序不确定。
int main(int avgc,char **argv)
{

    pid_t pid;
	pid=vfork();  //创建进程
	/*
    从创建进程开始,下面的内容子进程和父进程每人一份。子进程只执行pid==0的程序,
    父进程执行pid>0的程序。两个进程互不干扰,各自执行各自的程序。
  */
	int n=0;
	if(pid==0)
	{
      while(1)
	  	{
	  	    n++;
		  	if(n > 5)  exit(0);  //循环5次,退出子进程
			printf("我是子进程:%d\n",n);
			sleep(1);
	   }
	}
	
	else if(pid>0)
	{
       while(1)
       	{
       	  n++;
		  if(n>5) exit(0);
          printf("我是父进程:%d\n",n);
		  sleep(1);
	    }
	}
	
	else
	{
       printf("error\n");
	}
	
    return 0;

}

你可能感兴趣的:(linux,c语言,ubuntu)