pythondaemon在被函数调用时不起作用

2024-10-02 10:27:33 发布

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

我正在尝试使用python守护程序库生成一个将写入文件的守护程序。你知道吗

当我直接在“if uuu name_uuuuu=='\uuuu main_uuuuuuu'”语句中创建守护进程时,守护进程成功地写入文件:

from daemon import DaemonContext
def main():
    my_file.write("Daemon creation was successful")
    my_file.close()

if __name__ == "__main__":
    my_file = open("my_file", "w+")
    with DaemonContext(files_preserve=[my_file.fileno()]):
        main()

但是,当我使用单独的函数创建守护程序时,守护程序不会写入文件:

from daemon import DaemonContext
def main():
    my_file.write("Daemon creation was successful")
    my_file.close()

def create_daemon():
    my_file = open("my_file", "w+")
    with DaemonContext(files_preserve=[my_file.fileno()]):
        main()

if __name__ == "__main__":
    create_daemon()

工作示例中的if语句和非工作示例中的“create\ u daemon”函数共享完全相同的代码。为什么我不能通过调用函数来创建守护进程?你知道吗


Tags: 文件namefromimport程序if进程main
2条回答

在第二个示例中,main函数引用了不在该函数作用域中的my_file。你知道吗

def main():
    my_file.write("Daemon creation was successful")
    my_file.close()

该函数将(如果您的示例已完成)为my_file名称生成一个NameError。你知道吗

一种纠正方法是将my_file设为main的参数。你知道吗

这与守护进程无关。main无权访问my_file;您没有将文件作为参数或任何内容传入。你知道吗

相关问题 更多 >

    热门问题