目录 :
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分流让父子做不同的事情