系统调用创建子进程 --- fork基础认识

一、fork的基本认识

输入指令:man 2 fork  就可以看到fork的介绍( q 退出)

        fork()的参数为空,作用是:在调用fork()之后,创建一个子进程,子进程与父进程共享fork()之后的代码,数据各自私有一份,采用的是写时拷贝。

        返回值:父进程的返回值是子进程的pid,子进程的返回值是0。出错的话父进程返回-1,并且没有子进程被创建。 

#include
#include

int main()
{
    pid_t id = fork();
    printf("mypid is %d, fork() return %d\n", getpid(), id);                                                                                                    
    return 0;                                                                                                                         
}       

        运行结果第一行是父进程的,它的pid是31243,fork()的返回值是子进程的pid;第二行是子进程的,它的pid是41244,fork()的返回值是0。

        补充知识:                                                                                                                                                       1、getpid()可以获取当前进程的pid,getppid()可以获取当前进程的父进程的pid。                           2、父子进程不一定谁先执行,并且他们都是到return结束或者用exit(退出码) 退出。

二、fork的使用

        因为fork之后,父子的返回值不同,所以我们通常用if语句来让父子进程执行不同的任务。

#include
#include
#include
#include

int main()
{
  pid_t id = fork();
  if(id < 0)
  {
    perror("fork fail");
    exit(-1);
  }
  else if (id == 0)
  {
    //子进程
    printf("I am child process\n");
    exit(0);//子进程退出
  }
  //父进程
  printf("I am parent process\n");

  return 0;
}

到此结束,感谢大家观看 !

你可能感兴趣的:(linux,运维,服务器)