Linux 内核结构task_strut之进程fork

/*
 ============================================================================
 Name        : fork.c
 Author      : 
 Version     :
 Copyright   : Your copyright notice
 Description : Hello World in C, Ansi-style
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>
int forvar = 0;

int main(void) {
    //linux 中所有的进程都是通过init 1号进程fork出来的,
	//init  类似android system_server  zygote的功能
	int pid ;
	pid = fork();
	if(pid < 0){
		puts("!!!fork error!!!");
	}
	else if(pid == 0){
		puts("!!!this is child !!!");
		//copy on write,当子进程使用forvar的时候才拷贝一份给子进程
		printf("child forvar =%d\n",forvar);
	//	execlp("ls","ls","-al","/etc/passwd",(char *)0);
		execlp("eject","eject","-t",(char *)0);

	}
	else if(pid > 0){
          wait();
          puts("this is parent");
          forvar++;
          printf("parent forvar =%d",forvar);
	}
	return EXIT_SUCCESS;
}

你可能感兴趣的:(Linux 内核结构task_strut之进程fork)