lightningd: simplify --daemon.

Dumb programs which have a --daemon option call fork() early.  This is
terrible UX since startup errors get lost: the program exits with
"success" immediately then you discover via the logs that it didn't
start at all.

However, forking late introduced a heap of problems with changing
pids.  Instead, fork early but keep stderr and the parent around: if
we fail early on, the parent fails with us.  We release our parent
with an explicit action just before the main loop.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell
2019-08-01 15:50:43 +09:30
committed by Christian Decker
parent fc024f81d6
commit 979fbeb3b0
13 changed files with 84 additions and 266 deletions

View File

@@ -659,7 +659,6 @@ def test_cli(node_factory):
assert only_one(j['invoices'])['label'] == 'l"[]{}'
@pytest.mark.xfail(strict=True)
def test_daemon_option(node_factory):
"""
Make sure --daemon at least vaguely works!