python Linux 訊號編程 signals

來源:互聯網
上載者:User

標籤:python   訊號編程   signal   事件   

1. Signal介紹

  非強制中斷訊號(signal,又簡稱為訊號)用來通知進程發生了非同步事件。進程之間可以互相通過系統調用kill發送非強制中斷訊號。核心也可以因為內部事件而給進程發送訊號,通知進程發生了某個事件。注意,訊號只是用來通知某進程發生了什麼事件,並不給該進程傳遞任何資料。訊號是進程式控制制的一部分,也是 Linux編程中非常重要的部分。
  

  • signal允許非同步處理事件。
  • SIGKILL訊號就是在發送kill -9所產生的訊號。
  • 使用訊號編程其實並不難。

      在終端下輸入man 7 signal查看signal的類型:
      

2. 編程樣本

  使用python編程的主要步驟為:
  1)、匯入signal模組。
  2)、編寫訊號處理函數。
  3)、綁定訊號和訊號處理函數。
  4)、處理訊號

  以SIGINT為例,編寫sigtest.py。然後用“CTRL+C”中斷
  

#!/usr/bin/env python# -*- coding: utf-8 -*-import signaldef ctrlc_handler(sig_num, frm):    print "啦啦,你結束不了我^_^"print "Init signal handler..."signal.signal(signal.SIGINT, ctrlc_handler)print "Done !"while True:    pass

從結果上看,確實是我們自訂的訊號處理函數在運行。

有人問,那程式結束不了了怎麼辦?不用擔心,用ps命令列出進程列表,找到其PID,然後Kill掉就可以了。

python Linux 訊號編程 signals

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.