Python脚本在后台监控后不执行其余代码

2024-10-02 10:29:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个密码:

import os
import time

def createDaemon():
    try:
        pid = os.fork()

        if pid > 0:
            print ('PID: %d' % pid)
            os._exit(0)

    except OSError as error:
        print ('Unable to fork. Error: %d (%s)' % (error.errno, error.strerror))
        os._exit(1)

    doTask()

def doTask():
    file = open('/tmp/tarefa.log', 'w')

    while True:
        file.flush()
        time.sleep(2)

    file.close()

def myfunction():
    # do something, I am not implementing the code, it's useless for the question

createDaemon()
myfunction() # it is never executed.

正如您在注释中看到的,我想执行myfunction(),但它没有执行。我能做什么?我不是在写myfunction()的内容,因为它对我的问题没用。你知道吗


Tags: theimporttimeosdefexititerror
2条回答

所以,让我们想想这个。分叉之后有两个进程,其中一个进程在分叉之后立即关闭。另一个进程则进入具有无限循环的doTask,它将无限期地休眠2秒。这就是为什么没有进程比createDaemon()调用更深入。你知道吗

您的代码从未到达对myfunction()的调用,因为:

while True: # <  - 
    file.flush()
    time.sleep(2)

无限循环使线程无限期休眠2秒。去掉这个环,它就工作了。你知道吗

相关问题 更多 >

    热门问题