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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux :进程

發布時間:2025/4/5 linux 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux :进程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、進程的相關概念?

?

?ps -aux看到的太多了? 我們想查的精確一點

?ps -aux|grep init(所有帶init的)

?top: 別人看cpu的占用率 用 top

?

可以看到我們的這個進程的pid 以及cpu的占用率

?

?

?

?

2、創建進程函數fork 的使用

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 他的返回值是pid_t?

?

? ? ? ? ? ? ? ? 同一個程序每一次的pid都是不一樣的?

接著我們只是加一個fork

? ? ? ? ? ? ? ? ? ? ??發現出來了兩個結果,猜測:fork 以后創建了新進程

為了證明猜測,如下操作

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?得出來的結果如下

? ? ? ? ?

? ? ? ? ?再猜測:fork()以后父子進程都會運行的,只是pid 不同

因為新進程的id 號肯定和原來的id號不一樣

結果

都一樣的

?

?結果

pid跟原來相等的話是父進程? 不相等的話是子進程

?

這步 確定fork ()以后還有父進程在走

?

?

?這步看看fork()大于0 是不是父進程

?

fork()返回值大于0 進入了父進程。并且大于0的數剛好等于子進程的id 號

?

?(以前的Linux是拷貝全部的 ,現在linux是寫時拷貝? ?,不改動的地方直接共享)

3、fork的總結

?

這是第一個應用場景

不滿足條件不創建任何進程

?

想看看里面創建的具體的ip地址,改動如下

?

ps -aux能看到現在幾個進程再運行

4、vfork

?先來fork的

?父子進程都會執行,誰先執行取決于進程的調度

那么vfork 呢?

?

?一直是子進程在運行

稍微改動一下

讓子進程運行三遍就讓父進程運行?

? ? ? ? ? ? ? ? ? ? ? ? 然后我們可以打印一下變量

?

?子進程退出的時候要用好的方式退出,否則變量會被破壞掉

5、進程退出

?

?

?推薦用exit ,exit 是對_exit 和_Exit 的分裝。

exit 會把進程運行的變量(緩沖區的變量)進行處理再退出。其他兩個是直接退出

?

?

?這兩個_exit 和_Exit運行完結果都是對的?

?但是break? 可不是對的哦,破壞了變量的值

6、父進程等待子進程退出

?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 代碼不用改 ,直接copy 看一眼

S+表示正在運行的狀態

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Z+就是僵尸進程

那我們把vfork 換成fork呢

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?運行結果如下

????????????????????????????????????????

?還是有僵尸進程,這是因為我們沒對子進程的退出狀態收集,所以他們會變成僵尸進程

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?這是需要用到的函數(? 一般用前兩個)

(里面的ppt 改成wait 使調用者阻塞)?

?

?

?

?

因為status 參數是空的話,不關心退出狀態 。我們先來個空的試試,先用wait函數的。

?

3538沒掉了,就不會變成僵尸進程,因為之前我們沒對子進程的退出狀態收集,所以他們會變成僵尸進程,所以調用wait 防止子進程變成僵尸進程

那么退出的status 的值是多少呢?我們要用到那個非空

非空: 子進程退出狀態放在它所指向的地址中

不僅要等待子進程退出,還要檢查她的退出狀態。

假設退出的狀態默認為10?

? ? ?wait 記得取地址

假設子進程退出的時候,讓他的退出碼為3

?

?status 的值有點怪怪的,跟我們要的3 對不上

我們怎么樣才能把3真正的檢測出來?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 因為我們的子進程現在是正常退出? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ?需要用到這個宏解析他

?

改動一下

?

?這時候真正的結果子進程退出的狀態碼是3

(里面的ppt 改成wait 使調用者阻塞)?

options這個選項讓等待子進程退yong出的時候 ,父進程不堵塞

?

?用的最多的是第二個? 不堵塞

?

第一個參數Pid一般也有四個取值?,一般用的最多的是第二個

?

?

?

父子進程一起走

?雖然父進程有調用子進程的waitpid,但是父進程馬上就打印了 父進程不等待子進程退出

?

孤兒進程的代碼如下:

???????

?

補充:

?

?

?

?

?

總結

以上是生活随笔為你收集整理的Linux :进程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。