linux進程

linux進程包含如下幾個方面:
1:進程的控制(創建,等待子進程終止,執行程序,退出)
2:守護進程(什么是守護進程,守護進程的創建方式)
3:進程間的通信(管道,消息隊列,消息,socket,共享內存)
4:進程間的同步(互斥鎖,信號量,讀寫鎖,文件鎖)

關于fork函數你必須要知道的事情:

fork是一次調用,兩次返回,根據返回值區別是子進程還是父進程。
而且fork生成的子進程是復制父進程的數據空間,棧,堆,以及文件句柄(注意是復制不是共享),所以linux采用COW技術,避免性能的浪費。
還有一個fork的進化版本,vfork函數,該函數用于創建一個子進程,而且該進程會立即執行exec操作,啟動一個新的程序,所以其會共享父進程地址空間(不會產生復制開銷),而且vfork會保證子進程的優先執行,直到其被調用exce或者exit后父進程才能執行。
clone函數可以選擇性的復制父進程的資源,因此clone是創建線程的函數

int clone(int (*fn)(void *), void *child_stack, int flags, void *arg);

這里fn是函數指針,我們知道進程的4要素,這個就是指向程序的指針, child_stack明顯是為子進程分配系統堆??臻g,flags就是標志用來描述你需要從父進程繼承那些資源, arg就是傳給子進程的參數)。

關于進程的退出:

進程的終止方式比較多,包括函數return返回,或者調用exit退出,
而如果是多線程的進程的話,則最后一個線程的終止或者是調用exit退出會導致進程的退出。
進程的異常終止方式又分為三種:abort函數調用,還有收到異常信號,還有就是最后一個線程對取消請求作出響應。
注意:return函數在系統內部也是調用exit函數,而exit函數再調用_exit函數完成真正的退出操作,_exit不會清理緩沖區,會造成數據流失。
進程調用exit退出,會將退出代碼存儲到PCB中,然后發送SIGCHLD信號給父進程,自身成為僵尸進程,如果父進程調用wait函數則收到信號后會清除子進程的內存空間。
而如果父進程提前退出,則子進程會成為孤兒進程,孤兒進程由init進程托管。而init進程被設置為:無論哪個孤兒進程終止,init進程都會調用wait函數取得其終止狀態,從而防止了大量孤兒進程的產生。

父進程如何知道子進程退出的呢?

父進程可以調用wait函數或者是waitpid函數(二者的區別在于:wait是只要有子進程退出就會處理,而waitpid會等待指定的子進程退出)

而wait函數的過程如下:
如果有子進程已經退出,則立即獲取子進程的退出狀態,并返回。而如果所有子進程都在運行則阻塞等待。如果沒有子進程自然就出錯返回了。

還有一個很重要的函數exec
執行一個新的程序,參數必須有三種:
1:可執行文件路徑
2:參數
3:環境變量
exec族函數有多種變形,其實都是對這三種參數的變化:
比如可執行文件又分為相對路徑和絕對路徑
參數又分為,可以直接傳遞多個變長參數(以空指針結尾)或者是將參數放置于一個數組中。
還有環境變量,可以使用進程原有的環境變量,也可以將環境變量傳遞給函數。

linux的守護進程

什么是守護進程:守護進程隨系統開機而啟動,并且只能在系統關閉時終止,所以守護進程會在系統后臺運行。
如何創建守護進程:看書

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,516評論 2 379

推薦閱讀更多精彩內容

  • Linux 進程管理與程序開發 進程是Linux事務管理的基本單元,所有的進程均擁有自己獨立的處理環境和系統資源,...
    JamesPeng閱讀 2,491評論 1 14
  • 姓名:殷晨陽 轉載自:http://mp.weixin.qq.com/s/1xA8O6__LYe9P1eOVmE0...
    風雨無阻59閱讀 651評論 0 0
  • 什么是進程 進程(Process)是計算機中的程序關于某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單...
    晨起清風閱讀 1,810評論 0 5
  • 一看表,馬上就要九點了。又快下班了。一天的時間過的好快啊!想象著下班后回到家里,做到被窩里就迫不及待的拿出手機...
    益堅閱讀 511評論 0 1