mirror of
https://github.com/tmux/tmux.git
synced 2024-11-17 18:08:51 +00:00
Loop around waitpid in client, from Azat Khuzhin.
This commit is contained in:
parent
8b3e2eab5a
commit
4ece43a029
17
client.c
17
client.c
@ -526,11 +526,22 @@ client_signal(int sig)
|
|||||||
{
|
{
|
||||||
struct sigaction sigact;
|
struct sigaction sigact;
|
||||||
int status;
|
int status;
|
||||||
|
pid_t pid;
|
||||||
|
|
||||||
log_debug("%s: %s", __func__, strsignal(sig));
|
log_debug("%s: %s", __func__, strsignal(sig));
|
||||||
if (sig == SIGCHLD)
|
if (sig == SIGCHLD) {
|
||||||
waitpid(WAIT_ANY, &status, WNOHANG);
|
for (;;) {
|
||||||
else if (!client_attached) {
|
pid = waitpid(WAIT_ANY, &status, WNOHANG);
|
||||||
|
if (pid == 0)
|
||||||
|
break;
|
||||||
|
if (pid == -1) {
|
||||||
|
if (errno == ECHILD)
|
||||||
|
break;
|
||||||
|
log_debug("waitpid failed: %s",
|
||||||
|
strerror(errno));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (!client_attached) {
|
||||||
if (sig == SIGTERM || sig == SIGHUP)
|
if (sig == SIGTERM || sig == SIGHUP)
|
||||||
proc_exit(client_proc);
|
proc_exit(client_proc);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user