![](/img/trans.png)
[英]Simulate Ctrl-C keyboard interrupt in Python while working in Linux
[英]How to access local variables while handling ctrl-C event?
我想知道是否有可能訪問ctrl-C中斷流程時運行的函數的本地變量。 例如,當按下ctrl-C時main()運行:
def main(myInfo):
signal.signal(signal.SIGINT, KeyboardBreak)
reportOut(myInfo)
def KeyboardBreak(signum, frame):
reportOut(myInfo)
def reportOut(myInfo):
print myInfo
我想reportOut()運行main()是否一直向下調用它調用reportOut(),或者流程被中斷。
您的信號處理程序需要訪問變量myInfo
。 最簡單的方法是在 main()
定義KeyboardBreak()
main()
以便它可以通過閉包訪問myInfo
。
def main(myInfo):
def KeyboardBreak(signum, frame):
reportOut(myInfo)
signal.signal(signal.SIGINT, KeyboardBreak)
reportOut(myInfo)
def reportOut(myInfo):
print myInfo
或者,您可以編寫一個創建信號處理程序的工廠函數,再次使用閉包來保存myInfo
。 當這些功能中的任何一個很復雜時,這種方法可能是最好的
def main(myInfo):
signal.signal(signal.SIGINT, KeyboardBreakFactory(myinfo))
reportOut(myInfo)
def KeyboardBreakFactory(myinfo):
def KeyboardBreak(signum, frame):
reportOut(myInfo)
return KeyboardBreak
def reportOut(myInfo):
print myInfo
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.