簡體   English   中英

如何在處理ctrl-C事件時訪問局部變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM