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

一、fork的基本认识

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

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

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

#include<stdio.h>
#include<unistd.h>

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<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>

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;
}

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

  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值