Hello everybody!

When I call fork() inside a daemon thread, the main thread in the child process has the "daemon" property set to True. This is very confusing, since the program keeps running while the only thread is a daemon. According to the docs, if all the threads are daemons the program should exit. Here is an example:

import os
import threading

def child():
assert not threading.current_thread().daemon # This shouldn't fail

def parent():
new_pid = os.fork()
if new_pid == 0:
os.waitpid(new_pid, 0)

t = threading.Thread(target=parent)
Is it a bug in the CPython implementation? 
Also let's assume the second example. I have another non-daemon thread in the child process and want to detect this situation. Does anybody know a way to find such fake daemon threads that are really main threads? Best regards, Elizaveta Shashkova.