日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

对linux做一个简单介绍,对“Fork”做一个技术方面的简介

發(fā)布時間:2024/1/23 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对linux做一个简单介绍,对“Fork”做一个技术方面的简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用過 GitHub 的人大多知道它上面有個“Fork”的功能,用來將某個倉庫克隆到你的賬戶之下,從而可以對其進行修改、衍生,也可以比較方便的將你的修改推回到原來的倉庫(所謂的上游)。

隨著 GitHub 的流行,我們經(jīng)常能在各種文章中見到,“fork 某某項目”等說法,是的,“fork”這個一直沒有一個正式的譯名。

其實這個問題不獨出現(xiàn)在 GitHub 中,fork 這個詞更早的出現(xiàn)在 Unix/Linux 中的 C 語言編程之中。在 Unix/Linux 的進程模型中,fork 是指進程創(chuàng)建自身副本的操作,它通常是一個在內(nèi)核中實現(xiàn)的系統(tǒng)調(diào)用。fork 是 Unix 類系統(tǒng)中進程創(chuàng)建的主要方式(歷史上曾經(jīng)是唯一的方式)。從那個時候起,fork 就一直沒有一個確定的譯名。

不過,我們認為,對于這樣的一個經(jīng)常使用的專業(yè)名詞,有一個明確的譯名比較適合,雖然大家都習(xí)慣了直接用 fork 一詞。

fork 一詞在英文中的原意是“叉子”, 雖然翻譯成“分叉”、“分支”似乎也可以,但是前者較少用做動詞,后者則和 Branch 的譯名重復(fù)混淆。

據(jù) Linux 中國翻譯組(LCTT)的譯者 dongfengweixiao 提議,可譯作“復(fù)刻”,我們認為這是一個可取的譯法,一方面照顧到了音譯,另一方面其釋義也形象直觀。

既然說到這里,順便我們對復(fù)刻()做一個技術(shù)方面的簡介吧。

復(fù)刻()?GitHub 倉庫

在 GitHub 上評價一個項目(倉庫)是否流行,其中一個重要指標(biāo)就是其復(fù)刻()數(shù)。

在 GitHub 上參與一個開源項目的程度有三個階段:

star(點贊),如果你覺得某個項目不錯,可以為其點贊(star)

watch(關(guān)注),如果你希望進一步關(guān)注這個項目的進展,可以關(guān)注(watch)它

fork(復(fù)刻),如果你還想進一步為這個項目做一些貢獻,可以復(fù)刻(fork)它到你自己的賬戶下,做出了修改之后通過 Pull-Request(PR)方式將你的改動推回給原倉庫(上游),如果被接納就會進入到原倉庫之中

顯然,一個項目的復(fù)刻數(shù)越高,代表著貢獻者越多。

通過復(fù)刻() + PR 的方式對開源項目進行貢獻的流程類似下圖:

我們知道 GitHub 是運行在 Git 之上的,GitHub 中的復(fù)刻(fork)其本質(zhì)上是 Git 中的克隆(clone)。關(guān)于 GitHub 中的復(fù)刻的進一步介紹,可以參考“在 Github 和 Git 上 fork 之簡單指南”一文。

順便說一句,我們的 LCTT 翻譯組就是通過復(fù)刻fork?+ PR 的方式運作的,這也是 GitHub 上絕大多數(shù)開源項目的運作方式。

復(fù)刻()子進程

在 Unix 下的 C 語言編程中,通過 fork() 系統(tǒng)調(diào)用來對進程本身進行復(fù)制,然后被復(fù)制出來的子進程就可以執(zhí)行不同于父進程的操作,或通過 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());

}

所有的服務(wù)器守護進程,包括你所見到的 Web 服務(wù)、MySQL 數(shù)據(jù)庫服務(wù)等,都是通過這種方式來產(chǎn)生子進程來提供服務(wù)的。甚至,整個 Linux/Unix 中的進程,除了 init 進程本身之外,都是由 init 進程復(fù)刻(fork)出來的。關(guān)于服務(wù)器編程方面的復(fù)刻(fork)的使用,可以進一步參閱“搭個 Web 服務(wù)器(三)”一文。

復(fù)刻()炸彈

其實,不只是 C 語言里面有復(fù)刻(fork)的功能,在 shell 里面也有,想必大家可能都聽說過 “fork 炸彈”,這就是利用函數(shù)的迭代執(zhí)行,無限復(fù)刻(fork)出許多子進程,從而耗盡系統(tǒng)資源,導(dǎo)致系統(tǒng)崩潰的一個惡意(玩笑)用法。

復(fù)刻炸彈有很多種形式,不過最簡潔的可能就是如上圖的這個了,關(guān)于這個炸彈的具體解釋,可以參閱“經(jīng)典的 Fork 炸彈解析”,在此就不贅述了。

如果你對 fork 的翻譯有不同的意見,歡迎留言評論。

總結(jié)

以上是生活随笔為你收集整理的对linux做一个简单介绍,对“Fork”做一个技术方面的简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。