【问题标题】:How to set sigalarm to repeat over and over again in linux?如何在linux中设置sigalarm一遍又一遍地重复?
【发布时间】:2016-10-09 13:35:20
【问题描述】:

我正在尝试让闹钟一遍又一遍地工作。

我的处理程序是

def handler_SIGALRM(signum, frame):
    print "waiting"
    signal.alarm(2)

闹钟只工作一次,即使我每次都重新设置。 在我的代码中,我还在孩子工作后使用 sigchld 和 sys.exit。

我正在用 cygwin 运行它。

编辑: 我需要编写一个代码,每秒打印一次“等待”,使用 sigalarm 而不是循环

我是个白痴,我编辑了错误的代码

【问题讨论】:

    标签: python cygwin signals posix


    【解决方案1】:

    你把你的signal.alarm(2) 放错了地方。请参阅下面的示例。

    import time
    import signal
    
    class TimeoutException (Exception):
        pass
    
    def signalHandler (signum, frame):
        raise TimeoutException ()
    
    timeout_duration = 5
    
    signal.signal (signal.SIGALRM, signalHandler)
    
    
    
    
    for i in range (5):
        signal.alarm (timeout_duration)
        try:
            """Do something that has a possibility of taking a lot of time 
            and exceed the timeout_duration"""
            time.sleep (20)
        except TimeoutException as exc:
            print "Notify your program that the timeout_duration has passed"
        finally:
            #Clean out the alarm
            signal.alarm (0)
    

    【讨论】:

    • 我需要使用 sigalarm(而不是循环)每秒写入“等待”。我第一次在 main 中设置它。
    • 嗨。我是个白痴。我的代码不起作用,因为我编辑了另一个代码
    猜你喜欢
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多