Sync OpenBSD patchset 684:

Catch SIGCHLD to avoid a zombie, from patrick keshishian.
This commit is contained in:
Tiago Cunha 2010-04-22 21:48:49 +00:00
parent 02fc1fe0da
commit 7163907ab6

11
tmux.c
View File

@ -1,4 +1,4 @@
/* $Id: tmux.c,v 1.204 2010-02-26 13:31:39 tcunha Exp $ */ /* $Id: tmux.c,v 1.205 2010-04-22 21:48:49 tcunha Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -241,6 +241,7 @@ main(int argc, char **argv)
struct keylist *keylist; struct keylist *keylist;
struct env_data envdata; struct env_data envdata;
struct msg_command_data cmddata; struct msg_command_data cmddata;
struct sigaction sigact;
char *s, *shellcmd, *path, *label, *home, *cause; char *s, *shellcmd, *path, *label, *home, *cause;
char cwd[MAXPATHLEN], **var; char cwd[MAXPATHLEN], **var;
void *buf; void *buf;
@ -540,6 +541,14 @@ main(int argc, char **argv)
exit(1); exit(1);
} }
/* Catch SIGCHLD to avoid a zombie when starting the server. */
memset(&sigact, 0, sizeof sigact);
sigemptyset(&sigact.sa_mask);
sigact.sa_handler = SIG_IGN;
if (sigaction(SIGCHLD, &sigact, NULL) != 0)
fatal("sigaction failed");
/* Initialise the client socket/start the server. */
if ((main_ibuf = client_init(path, cmdflags, flags)) == NULL) if ((main_ibuf = client_init(path, cmdflags, flags)) == NULL)
exit(1); exit(1);
xfree(path); xfree(path);