以上代码中main()函数包括了一个永久循环过程:把时间戳写入一个文件。
运行的时候,建立一个进程,linux会分配个进程号。然后调用os.fork()创建子进程。若pid>0就是自己,自杀。子进程跳过if语句,通过os.setsid()成为linux中的独立于终端的进程(不响应sigint,sighup等)。
第二次os.fork再创建一个子进程,自己自杀。原因是os.setsid()后成为父进程,虽然已经不被动响应信号,但访问终端文件时控制权还是会失去。这次创建的进程真的是孤魂野鬼的daemon,并且外界对它影响被控制在最小。
代码来自:http://code.activestate.com/recipes/66012/download/1/
可以进一步参考这篇文章:如何编写daemon程序
本文详细介绍了守护进程的创建过程,包括两次fork的原因及其作用,以及如何使进程脱离终端成为真正的后台守护进程。
399

被折叠的 条评论
为什么被折叠?



