Daemonize fix for Windows

- /dev/null isn't available on Windows so just close the console
sockets directly
This commit is contained in:
Peter Šurda 2017-08-20 11:55:54 +02:00
parent 2da4d00730
commit 314af0925f
Signed by untrusted user: PeterSurda
GPG Key ID: 0C5F50C0B5F37D87
1 changed files with 12 additions and 6 deletions

View File

@ -351,12 +351,18 @@ class Main:
shared.thisapp.lockPid = None # indicate we're the final child
sys.stdout.flush()
sys.stderr.flush()
si = file('/dev/null', 'r')
so = file('/dev/null', 'a+')
se = file('/dev/null', 'a+', 0)
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
try:
si = file('/dev/null', 'r')
so = file('/dev/null', 'a+')
se = file('/dev/null', 'a+', 0)
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
# /dev/null not available
except IOError:
sys.stdin.close()
sys.stdout.close()
sys.stderr.close()
def setSignalHandler(self):
signal.signal(signal.SIGINT, helper_generic.signal_handler)