diff options
author | nicm <nicm> | 2017-07-12 09:24:17 +0000 |
---|---|---|
committer | nicm <nicm> | 2017-07-12 09:24:17 +0000 |
commit | 0453ad01468460d5fca09457ed7c862685076931 (patch) | |
tree | 7e63dbfcf45de2deab536f6800329244c38b2348 /server.c | |
parent | ed3cfaafb2c04776b6452fa968715a3626d99a4a (diff) | |
download | rtmux-0453ad01468460d5fca09457ed7c862685076931.tar.gz rtmux-0453ad01468460d5fca09457ed7c862685076931.tar.bz2 rtmux-0453ad01468460d5fca09457ed7c862685076931.zip |
Move signal code into proc.c.
Diffstat (limited to 'server.c')
-rw-r--r-- | server.c | 19 |
1 files changed, 16 insertions, 3 deletions
@@ -136,7 +136,8 @@ server_create_socket(void) /* Fork new server. */ int -server_start(struct event_base *base, int lockfd, char *lockfile) +server_start(struct tmuxproc *client, struct event_base *base, int lockfd, + char *lockfile) { int pair[2]; struct job *job; @@ -144,13 +145,25 @@ server_start(struct event_base *base, int lockfd, char *lockfile) if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, pair) != 0) fatal("socketpair failed"); - server_proc = proc_start("server", base, 1, server_signal); - if (server_proc == NULL) { + switch (fork()) { + case -1: + fatal("fork failed"); + case 0: + break; + default: close(pair[1]); return (pair[0]); } close(pair[0]); + if (daemon(1, 0) != 0) + fatal("daemon failed"); + proc_clear_signals(client); + if (event_reinit(base) != 0) + fatalx("event_reinit failed"); + server_proc = proc_start("server"); + proc_set_signals(server_proc, server_signal); + if (log_get_level() > 1) tty_create_log(); if (pledge("stdio rpath wpath cpath fattr unix getpw recvfd proc exec " |