標籤:表示 ack 結構 live post number track params 系統調用
各位看官們,大家好,上一回中咱們說的是進程相互排斥的範例,這一回咱們說的範例是:進程停止。閑話休提,言歸正轉。
讓我們一起talk C栗子吧!
我們在前面的章回中介紹了怎樣建立進程,只是沒有介紹停止進程,已經有部分看官在提問了。怎樣停止進程呢?看官莫急,今天咱們就一起來說說怎樣停止進程。
停止進程的方法有以下幾種:
- 進程正常結束時停止;
- 使用exit函數停止進程。
- 強制停止進程;
- 進程執行過程中錯誤發生後停止進程。
接下來,我們分別介紹這幾咱停止的方法:
進程正常結束時停止
我們寫的程式中都有一個main函數,在main函數中使用return語句給系統返回一個數值。這時候擁有main函數的進程就會停止。
該方法是最常見的方法,可能是我們見多了,反而認為非常尋常。
俗話說:物以稀為貴說是就是這個道理。
以下是一個簡單的代碼結構:
int main(){ //do something return 0; //通過返回停止進程 }
使用exit函數停止進程
在程式中直接調用該函數就能夠,傳遞給它的參數一般是1。表示程式發生異常而停止。比方,我們在函數中經常會推斷指標是否為空白,假設為空白則停止執行程式。
if(NULL == p) exit(1); //通過exit函數停止進程
強制停止進程
在終端中使用kill命令發送一個訊號給進程。比如:
kill 34567
上面的範例表示給PID為34567的進程發送一個TERM訊號,該進程收到訊號後就會停止。
當然了。能夠使用kill命令發送其他訊號給進程,以便 讓進程停止。我們僅僅是在範例中使用了預設的訊號。
此外。Linux提供了kill系統調用,當我們想在代碼中強制停止某個進程時,能夠使用它發送停止訊號給某個進程。進而強制停止進程。比如:
kill(34567,SIGKILL)
上面的範例表示停止PID為34567的進程。
使用該方法時須要擁有管理員權限。否則沒有許可權給進程發訊號。
進程執行過程中錯誤發生後停止進程
當在進程執行的過程中發生嚴重錯誤時,系統會停止該進程。該方法是系統使用的,我們不能使用。我們要做的就是檢查各種可能的異常情況。避免嚴重錯誤的發生,比方記憶體流失。
看官們,進程停止的方法是非經常見並且easy理解,所以我們就不寫代碼了。
各位看官,關於進程停止的範例咱們就講到這裡。欲知後面還有什麼範例,且聽下回分解 。
一起talk C栗子吧(第八十一回:C語言執行個體--進程停止)