Python程序退出方式(sys.exit() os._exit() os.kill() os.popen(...))

對於如何結束一個Python程序或者用Python操做去結束一個進程等,Python自己給出了好幾種方法,而這些方式也存在着一些區別,對相關的幾種方法看了並實踐了下,同時也記錄下。linux

參考:編程

Python 核心編程(第二版)函數

http://www.zhihu.com/question/21187839spa

 

1. sys.exit()code

執行該語句會直接退出程序,這也是常常使用的方法,也不須要考慮平臺等因素的影響,通常是退出Python程序的首選方法。視頻

該方法中包含一個參數status,默認爲0,表示正常退出,也能夠爲1,表示異常退出。blog

1 import sys 2 sys.exit() 3 sys.exit(0) 4 sys.exit(1)

該方法引起的是一個SystemExit異常(這是惟一一個不會被認爲是錯誤的異常),當沒有設置捕獲這個異常將會直接退出程序執行,固然也能夠捕獲這個異常進行一些其餘操做。進程

 

2. os._exit()get

效果也是直接退出,不會拋出異常,可是其使用會受到平臺的限制,但咱們經常使用的Win32平臺和基於UNIX的平臺不會有所影響。it

知乎上有說是調用了C 語言的 _exit() 函數(未考證)

 

3. os.kill()

通常用於直接Kill掉進程,可是隻能在UNIX平臺上有效。

基本原理:該函數是模擬傳統的UNIX函數發信號給進程,其中包含兩個參數:一個是進程名,即所要接收信號的進程;一個是所要進行的操做。

操做(第二個參數)的經常使用取值爲:

SIGINT      終止進程     中斷進程

SIGTERM   終止進程     軟件終止信號

SIGKILL    終止進程      殺死進程

SIGALRM   鬧鐘信號

例:

在linux平臺上打開VLC視頻播放器,而後查看運行的進程:進程號是 4497

 

而後執行os.kill操做:

執行完以後能夠發現VLC視頻播放器已經關閉,同時該進程也已經被Kill了。

 

4. Windows下Kill進程

既然在Linux下可以進行上述操做,那麼Windows下也可以有相關的操做。

這裏使用的是os.popen(), 該方法是用於直接執行系統命令,而在Windows下其實就是使用taskkill來kill掉進程,其基本形式是,

taskkill   /pid   程序的PID號碼

能夠直接在CMD窗口下試下這個命令....

能夠先打開一個計算器程序,而後使用tasklist查看該程序的pid,這裏是620,因此對應的Python代碼是:

1 import os 2 if __name__ == "__main__": 3     pid = 620
4     os.popen('taskkill.exe /pid:'+str(pid))

 

ok,

相關文章
相關標籤/搜索