進(jìn)程創(chuàng)建和運(yùn)行

歡迎關(guān)注我的博客Zhuhao's Blog獲取最新文章

簡(jiǎn)單的說,每個(gè)應(yīng)用在運(yùn)行時(shí)就會(huì)產(chǎn)生一個(gè)進(jìn)程性湿,這個(gè)進(jìn)程就對(duì)這個(gè)應(yīng)用負(fù)責(zé)涯穷,掌握這個(gè)應(yīng)用的運(yùn)行狀態(tài)换帜。

可是為什么還要用一個(gè)進(jìn)程來控制一個(gè)應(yīng)用呢,下面將會(huì)簡(jiǎn)單的解釋一下涯塔。

現(xiàn)在的應(yīng)用對(duì)于資源的要求都是獅子大開口肌稻,開口就是幾個(gè)G,一臺(tái)電腦的內(nèi)存一般也就幾個(gè)G匕荸,總不能一臺(tái)電腦就跑這一個(gè)應(yīng)用吧爹谭。為了解決這個(gè)問題,操作系統(tǒng)就使用了虛擬內(nèi)存榛搔,讓每個(gè)進(jìn)程代表一個(gè)應(yīng)用诺凡,給每個(gè)進(jìn)程一種自己獨(dú)霸整臺(tái)電腦的假象,然后操作系統(tǒng)進(jìn)行上下文切換践惑,只把這個(gè)進(jìn)程正好需要使用的資源放進(jìn)內(nèi)存腹泌;這樣每個(gè)進(jìn)程都有自己獨(dú)有的資源。

創(chuàng)建進(jìn)程

創(chuàng)建進(jìn)程需要一個(gè)系統(tǒng)調(diào)用 fork()尔觉,fork可以創(chuàng)建一個(gè)和當(dāng)前進(jìn)程映像一樣的進(jìn)程凉袱;成功時(shí)創(chuàng)建子進(jìn)程并返回子進(jìn)程的pid,失敗時(shí)不會(huì)創(chuàng)建子進(jìn)程侦铜,返回-1并設(shè)置相應(yīng)的errno专甩。

順便介紹一下pid,pid是進(jìn)程的ID钉稍,數(shù)據(jù)類型是pid_t配深,在Linux中被定義為int〖廾ぃ可以調(diào)用 getpid()來獲得調(diào)用進(jìn)程的pid篓叶,還可以通過調(diào)用 getppid() 來獲得調(diào)用進(jìn)程的父進(jìn)程的pid。

運(yùn)行進(jìn)程

運(yùn)行進(jìn)程需要調(diào)用 exec 系統(tǒng)調(diào)用羞秤,但是不存在單一的exec函數(shù)缸托,他是由一系列的exec函數(shù)組成的。

以一個(gè)最簡(jiǎn)單的調(diào)用 execl() 為例:

  • 成功的execl()調(diào)用改變 地址空間 和進(jìn)程映像
  • 所有的掛起的信號(hào)都會(huì)丟失
  • 捕捉到的所有信號(hào)都會(huì)還原為默認(rèn)處理方式
  • 丟棄所有的內(nèi)存鎖
  • 大多數(shù)進(jìn)程的屬性會(huì)還原成默認(rèn)值(pid 父進(jìn)程的pid 優(yōu)先級(jí) 所屬的用戶和組 不會(huì)變)
  • 清空和進(jìn)程內(nèi)存地址空間相關(guān)的所有數(shù)據(jù)瘾蛋,包括所有映射的文件

終止進(jìn)程

終止進(jìn)程使用的是 exit() 系統(tǒng)調(diào)用俐镐,參數(shù)用于表示進(jìn)程的推出狀態(tài), EXIT_SUCCESSEXIT_FAILURE 這兩個(gè)可移植的宏分別表示成功和失敳负摺(也可以使用0和非0值來表示佩抹,不過可移植性就差了)叼风。

簡(jiǎn)單的表示成功退出就使用

exit(EXIT_SUCCESS);

這個(gè)系統(tǒng)調(diào)用會(huì)先完成在用戶空間需要做的事,再調(diào)用_exit()再處理內(nèi)核中的事棍苹。

在用戶空間做的事

  • 調(diào)用任何由 atexit()on_exit() 注冊(cè)的函數(shù)无宿,按在系統(tǒng)中注冊(cè)的相反順序。(假如在exit()前運(yùn)行了atexit(a) atexit(b)枢里,那么在調(diào)用exit()后就會(huì)先運(yùn)行b再運(yùn)行a )
  • 清空所有已打開的標(biāo)準(zhǔn)I/O流
  • 刪除有tmpfile()函數(shù)創(chuàng)建的所有臨時(shí)文件

內(nèi)核會(huì)清理進(jìn)程所創(chuàng)建的 不再使用的所有資源這包括但不局限于:分配內(nèi)存 打開文件和System Ⅴ的信號(hào)量孽鸡。清理完成后,內(nèi)核會(huì)摧毀進(jìn)程栏豺,并告知父進(jìn)程其子進(jìn)程已經(jīng)終止彬碱。

參考源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市奥洼,隨后出現(xiàn)的幾起案子巷疼,更是在濱河造成了極大的恐慌,老刑警劉巖灵奖,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皮迟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡桑寨,警方通過查閱死者的電腦和手機(jī)伏尼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尉尾,“玉大人爆阶,你說我怎么就攤上這事∩秤剑” “怎么了辨图?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肢藐。 經(jīng)常有香客問我故河,道長(zhǎng),這世上最難降的妖魔是什么吆豹? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任鱼的,我火速辦了婚禮,結(jié)果婚禮上痘煤,老公的妹妹穿的比我還像新娘凑阶。我一直安慰自己,他們只是感情好衷快,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布宙橱。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪师郑。 梳的紋絲不亂的頭發(fā)上环葵,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音宝冕,去河邊找鬼张遭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛猬仁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播先誉,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼湿刽,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了褐耳?” 一聲冷哼從身側(cè)響起诈闺,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铃芦,沒想到半個(gè)月后雅镊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刃滓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年仁烹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咧虎。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卓缰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出砰诵,到底是詐尸還是另有隱情征唬,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布茁彭,位于F島的核電站总寒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏理肺。R本人自食惡果不足惜摄闸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望妹萨。 院中可真熱鬧贪薪,春花似錦、人聲如沸眠副。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)囱怕。三九已至霍弹,卻和暖如春毫别,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背典格。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工岛宦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耍缴。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓砾肺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親防嗡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子变汪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Linux 進(jìn)程管理與程序開發(fā) 進(jìn)程是Linux事務(wù)管理的基本單元,所有的進(jìn)程均擁有自己獨(dú)立的處理環(huán)境和系統(tǒng)資源蚁趁,...
    JamesPeng閱讀 2,451評(píng)論 1 14
  • 又來到了一個(gè)老生常談的問題裙盾,應(yīng)用層軟件開發(fā)的程序員要不要了解和深入學(xué)習(xí)操作系統(tǒng)呢? 今天就這個(gè)問題開始他嫡,來談?wù)劜?..
    tangsl閱讀 4,098評(píng)論 0 23
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理番官,服務(wù)發(fā)現(xiàn),斷路器钢属,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • 楊絳先生曾說過徘熔,很多人的毛病是書讀得太少,想的太多淆党。 不知道原話是不是這樣的近顷,但大致是這個(gè)意思。今天的晨讀感悟分享...
    水上漂來一盞燈閱讀 92評(píng)論 0 1
  • 愛吃的小胖紙閱讀 155評(píng)論 0 1