手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

对“Fork”做一个技术方面的简介

时间:2024-11-01 01:35:56

1、复刻GitHub 仓库在 GitHub 上评价一个项目(仓库)是否流行,其中一个重要指标就是其复刻数。在 GitHub 上参与一个开源项目的程度有三个阶段:star(点赞),如果你觉得某个项目不错,可以为其点赞(star)watch(关注),如果你希望进一步关注这个项目的进展,可以关注(watch)它fork(复刻),如果你还想进一步为这个项目做一些贡献,可以复刻(fork)它到你自己的账户下,做出了修改之后通过 Pull-Request(PR)方式将你的改动推回给原仓库(上游),如果被接纳就会进入到原仓库之中显然,一个项目的复刻数越高,代表着贡献者越多。通过复刻+ PR 的方式对开源项目进行贡献的流程类似下图:我们知道 GitHub 是运行在 Git 之上的,GitHub 中的复刻fork其本质上是 Git 中的克隆clone。关于 GitHub 中的复刻的进一步介绍,可以参考“在 Github 和 Git 上 fork 之简单指南”一文。顺便说一句,我们的 LCTT 翻译组就是通过复刻fork+ PR 的方式运作的,这也是 GitHub 上绝大多数开源项目的运作方式。

对“Fork”做一个技术方面的简介

2、复刻子进程在 Unix 下的 C 语言编程中,通过 fork() 系统调用来对进程本身进行复制,然后被复制出来的子进程就可以执行不同于父进程的操作,或通过 exec() 运行其它进程。典型的 C 代码如下:fpid = fork(); if (fpid < 0) printf("error in fork!"); else if (fpid == 0) { printf("i am the child process, my process id is %d/n",getpid()); } else { printf("i am the parent process, my process id is %d/n",getpid()); }所有的服务器守护进程,包括你所见到的 Web 服务、MySQL 数据库服务等,都是通过这种方式来产生子进程来提供服务的。甚至,整个 Linux/Unix 中的进程,除了 init 进程本身之外,都是由 init 进程复刻fork出来的。关于服务器编程方面的复刻fork的使用,可以进一步参阅“搭个 Web 服务器(三)”一文。

3、复刻炸弹其实,不只是 C 语言里面有复刻fork的功能,在 shell 里面也有,想必大家可能都听说过 “fork 炸弹”,这就是利用函数的迭代执行,无限复刻fork出许多子进程,从而耗尽系统资源,导致系统崩溃的一个恶意(玩笑)用法。复刻炸弹有很多种形式,不过最简洁的可能就是如上图的这个了,关于这个炸弹的具体解释,可以参阅“经典的 Fork 炸弹解析”,在此就不赘述了。

对“Fork”做一个技术方面的简介
© 手抄报圈