系统调用创建进程 — fork初始

文章详细解释了进程的创建,特别是通过fork函数创建子进程的过程。fork会复制父进程的内核数据结构,使得子进程和父进程共享代码但拥有独立的数据结构。fork的返回值在父进程和子进程中不同,用于区分执行流,使得它们能执行不同的任务。最后,文章展示了如何通过if-else结构利用fork的返回值让父子进程执行不同的代码。
摘要由CSDN通过智能技术生成

目录 :

        1.进程的创建

        2.如何理解fork创建的子进程

        3.fork的返回值

        4.fork怎么写代码

---------------------------------------------------------------------------------------------------------------------------------

1.进程的创建

1.进程的创建方式(一)

我们在命令行输入的指令,本质就是在系统上创建进程,不过这个进程很快就执行完了

 2.进程的创建方式(二)   --- fork()创建进程

我们使用fork()时先看一个现象

 那么我们可以知道这一定是两个进程来执行的,不然怎么可能执行两次

 那么我们的21144这个PPID的进程是谁呢  ???  ---》这个是我们的命令行(也就是bash)

这里就类似于媒婆的例子,媒婆招一些实习生来帮村长的儿子说媒(也就类似于Xshell的运行原理)7437类似于媒婆(Xshell),25282、25283类似于实习生,帮助Xshell运行具有一些风险的指令

到这里我们就可以观察出fork创建了子进程!!!!!!!!

2.如何理解fork创建的子进程

 我们fork创建了进程本质就是在系统当中多了一份与进程相关的内核数据结构(task_struct)

子进程和父进程的继承关系

 所有我们现在就可以理解为什么我们后面的代码可以执行两遍了

父子进程的代码和数据都是共享的

 

总结fork创建的子进程   : 就是子进程的内核数据结构(task_struct)是自己有一份的,而子进程的代码是和父进程共享的,数据是通过写时拷贝来共享的

3.fork的返回值

我们先来思考一个问题

我们创建的子进程,就是为了和父亲干一样的事情???有意义嘛------->一般是没有意义的!!!!!!!!!!!!!!

一般还是要让我们的子进程和父进程做不一样的事情(才能提高效率)

那么我们子进程和父进程的代码是共享的,怎么才能让子进程和父进程执行不同的代码呢???????------》这就需要用到我们的fork的返回值了

 

 那么问题来了,返回值怎么可能有两个

如何理解有两个返回值???

主要原因是因为这里有两个执行流(父子执行流)

那么如何理解两个返回值的设置(返回值的不同)

 4.fork怎么写代码

通过if   else分流让父子做不同的事情

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值