程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 一起talk C栗子吧(第八十一回:C語言實例--進程停止)

一起talk C栗子吧(第八十一回:C語言實例--進程停止)

編輯:關於C語言

一起talk C栗子吧(第八十一回:C語言實例--進程停止)



各位看官們,大家好,上一回中咱們說的是進程互斥的例子,這一回咱們說的例子是:進程停止。閒話休提,言歸正轉。讓我們一起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的進程。使用該方法時需要擁有管理員權限,否則沒有權限給進程發信號。

進程運行過程中發生錯誤後停止進程

當在進程運行的過程中發生嚴重錯誤時,系統會停止該進程。該方法是系統使用的,我們不能使用,我們要做的就是檢查各種可能的異常情況,避免嚴重錯誤的發生,比如內存洩漏。

看官們,進程停止的方法是很常見而且容易理解,所以我們就不寫代碼了。

各位看官,關於進程停止的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解 。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved