xenu_nntp/lib/nntp/tiny/daemon.py
2024-12-03 16:53:31 -05:00

26 lines
703 B
Python

import os
import signal
import configparser
from nntp.tiny.config import (ConfigSectionException,
ConfigValueException)
class Daemon():
def init(config: configparser.ConfigParser):
if not config.has_section('daemon'):
raise ConfigSectionException('daemon')
if not config.has_option('daemon', 'pidfile'):
raise ConfigValueException('daemon', 'pidfile')
pidfile = config.get('daemon', 'pidfile')
pid = os.fork()
if pid > 0:
exit(0)
with open(pidfile, 'w') as fh:
print(str(os.getpid()), file=fh)
signal.signal(signal.SIGTERM, lambda s, f: os.unlink(pidfile))