2013-05-03 100 views
-1

什麼是信號處理?什麼是編程意義上的信號?它是否像硬件中斷一樣,例如計時器?信號處理的含義是什麼?

任何人都可以給我一個Python例子嗎?

+2

由於這是一個概念上的問題,我已經要求將它遷移到程序員。堆棧溢出是針對實際問題(編碼時,你卡住了),程序員的概念問題(在白板上說)。 – 2013-05-03 15:57:37

+0

那麼[WP的定義](http://en.wikipedia.org/wiki/Unix_signal)並不算太壞,但其他地方可能有更好的描述。至於Python的例子,我最近發佈了一個[對另一個問題的答案]的結尾(http://stackoverflow.com/questions/16341047/how-to-clean-up-subprocess-popen-instances-upon-過程終止/ 16341870#16341870)。 – Aya 2013-05-03 15:58:44

+0

謝謝@MartijnPieters – ToniAz 2013-05-03 18:16:10

回答

0

一個信號通常正是它聽起來像 - 它是一個消息傳遞到一個過程。大多數情況下,當人們說「信號」時,他們指的是發送到進程來觸發事件的軟件中斷。

認爲它作爲進程之間傳遞信息 - 無論這意味着一個將中止線程/運行停止方法等

見:http://docs.python.org/2/library/signal.html中的示例:

import signal, os 

def handler(signum, frame): 
    print 'Signal handler called with signal', signum 
    raise IOError("Couldn't open device!") 

# Set the signal handler and a 5-second alarm 
signal.signal(signal.SIGALRM, handler) 
signal.alarm(5) 

# This open() may hang indefinitely 
fd = os.open('/dev/ttyS0', os.O_RDWR) 

signal.alarm(0)   # Disable the alarm 
+0

它給了我一個錯誤:'模塊'對象沒有'SIGALRM'屬性。我認爲這是因爲我在Windows上工作......我不能在Windows上使用Python進行中斷嗎? – ToniAz 2013-05-03 18:26:43

+0

Windows表面上不支持那種類型的SIGnals。信號中有什麼.__你的python版本中有dict__嗎? – 2013-07-09 23:34:21