Skip to content
Snippets Groups Projects
Commit 2ffe74f2 authored by Piotr Maślanka's avatar Piotr Maślanka
Browse files

extra types in daemon

parent 9ba3e62a
No related branches found
No related tags found
No related merge requests found
__version__ = '2.4.17a5'
__version__ = '2.4.17a6'
import logging
import os
import sys
import typing as tp
import types
try:
import pwd
......@@ -15,8 +15,6 @@ except ImportError:
pwd = grp = L()
logger = logging.getLogger(__name__)
DEVNULL = '/dev/null'
__all__ = ['daemonize']
......@@ -64,25 +62,26 @@ def daemonize(exit_via: tp.Callable = sys.exit,
_parse_ug(gid, grp, 'gr_gid', os.setegid)
def _parse_ug(no, module, field_name, osfun):
def _parse_ug(no: tp.Union[str, int], module: types.ModuleType, field_name: str,
osfun: tp.Callable[[int], None]) -> None:
if no is not None:
if isinstance(no, str):
no = getattr(module.getpwnam(no), field_name)
osfun(no)
def _redirect_descriptors_to_null():
def _redirect_descriptors_to_null() -> None:
sys.stdin = open(DEVNULL, 'rb')
sys.stdout = open(DEVNULL, 'wb')
sys.stderr = open(DEVNULL, 'wb')
def _close_descriptors():
def _close_descriptors() -> None:
for d in [sys.stdin, sys.stdout, sys.stderr]:
d.close()
def _double_fork(exit_via):
def _double_fork(exit_via: tp.Callable[[], tp.NoReturn]) -> None:
os.umask(0)
if os.fork() > 0:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment