Есть некоторый модуль, который при импорте (и некоторых параметрах) должен демонизировать процесс. Да, я знаю, что это не очень хороший дизайн, но это вариант для ленивых пользователей - весь функционал подключается одним импортом. Демонизация выглядит как то так:
#racs.py
if _daemonize :
if os.fork() : time.sleep(1); sys.exit()
logfile, stdin = open( path+'logfile', 'w' ), open('/dev/null')
os.setsid()
os.dup2( stdin.fileno(), sys.stdin.fileno() )
os.dup2( logfile.fileno(), sys.stdout.fileno() )
os.dup2( logfile.fileno(), sys.stderr.fileno() )
...
#test.py
from racs import *
Дальше потомок умирает при выходе из racs (поскольку хвост racs успевает отработать) со словами:
Traceback (most recent call last):
File "./test.py", line 3, in <module>
from racs import *
RuntimeError: not holding the import lock
File "./test.py", line 3, in <module>
RuntimeError : not holding the import lock
Это вообще как нить лечится?