各位看官們,大家好,上一回中咱們說的是進程互斥的例子,這一回咱們說的例子是:進程停止。閒話休提,言歸正轉。讓我們一起talk C栗子吧!
我們在前面的章回中介紹了如何創建進程,不過沒有介紹停止進程,已經有部分看官在提問了,如何停止進程呢?看官莫急,今天咱們就一起來說說如何停止進程。
停止進程的方法有以下幾種:
進程正常結束時停止; 使用exit函數停止進程; 強制停止進程; 進程運行過程中發生錯誤後停止進程。接下來,我們分別介紹這幾咱停止的方法:
我們寫的程序中都有一個main函數,在main函數中使用return語句給系統返回一個數值,這時候擁有main函數的進程就會停止。該方法是最常見的方法,可能是我們見多了,反而覺得很平常。俗話說:物以稀為貴說是就是這個道理。
下面是一個簡單的代碼結構:
int main()
{
//do something
return 0; //通過返回停止進程
}
在程序中直接調用該函數就可以,傳遞給它的參數通常是1。表示程序發生異常而停止。比如,我們在函數中經常會判斷指針是否為空,如果為空則停止運行程序。
if(NULL == p)
exit(1); //通過exit函數停止進程
在終端中使用kill命令發送一個信號給進程。例如:
kill 34567
上面的例子表示給PID為34567的進程發送一個TERM信號,該進程收到信號後就會停止。當然了,可以使用kill命令發送其它信號給進程,以便 讓進程停止。我們只是在例子中使用了默認的信號。
此外,Linux提供了kill系統調用,當我們想在代碼中強制停止某個進程時,可以使用它發送停止信號給某個進程,進而強制停止進程。例如:
kill(34567,SIGKILL)
上面的例子表示停止PID為34567的進程。使用該方法時需要擁有管理員權限,否則沒有權限給進程發信號。
當在進程運行的過程中發生嚴重錯誤時,系統會停止該進程。該方法是系統使用的,我們不能使用,我們要做的就是檢查各種可能的異常情況,避免嚴重錯誤的發生,比如內存洩漏。
看官們,進程停止的方法是很常見而且容易理解,所以我們就不寫代碼了。
各位看官,關於進程停止的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解 。