Image

Двойной fork() или каким должен быть правильный демон?

Доброго вам.

Вот тут наткнулся на такой кусочек кода:

try:
pid = os.fork()
if pid > 0:
sys.exit(0)
except OSError, e:
print >>sys.stderr, "fork #1 failed: %d (%s)" % (e.errno, e.strerror)
sys.exit(1)


os.chdir("/")
os.setsid()
os.umask(0)


try:
pid = os.fork()
if pid > 0:
print "Daemon PID %d" % pid
sys.exit(0)
except OSError, e:
print >>sys.stderr, "fork #2 failed: %d (%s)" % (e.errno, e.strerror)
sys.exit(1)


Разъясните, зачем два раза форкается?
Демонов я до этого не писал. Но всегда думал что одного форка хватить должно. Это только с python такая заморочка?
Или всегда так нужно? Мне казалось что я видел прмеры Си-шных демонов, которые форкаются единажды... Да точно, так и есть.