mirror of
https://github.com/tsl0922/ttyd.git
synced 2025-12-23 04:14:18 +01:00
protocol: print signal name
This commit is contained in:
@@ -165,9 +165,12 @@ child_cb(uv_signal_t *handle, int signum) {
|
|||||||
proc->status = WEXITSTATUS(stat);
|
proc->status = WEXITSTATUS(stat);
|
||||||
lwsl_notice("process exited with code %d, pid: %d\n", proc->status, proc->pid);
|
lwsl_notice("process exited with code %d, pid: %d\n", proc->status, proc->pid);
|
||||||
} else if (WIFSIGNALED(stat)) {
|
} else if (WIFSIGNALED(stat)) {
|
||||||
int term_sig = WTERMSIG(stat);
|
int sig = WTERMSIG(stat);
|
||||||
proc->status = 128 + term_sig;
|
char sig_name[20];
|
||||||
lwsl_notice("process killed with signal %d, pid: %d\n", term_sig, proc->pid);
|
|
||||||
|
proc->status = 128 + sig;
|
||||||
|
get_sig_name(sig, sig_name, sizeof(sig_name));
|
||||||
|
lwsl_notice("process killed with signal %d (%s), pid: %d\n", sig, sig_name, proc->pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
LIST_REMOVE(proc, entry);
|
LIST_REMOVE(proc, entry);
|
||||||
@@ -216,9 +219,14 @@ spawn_process(struct pss_tty *pss) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
kill_process(pid_t pid, int sig) {
|
kill_process(struct pty_proc *proc) {
|
||||||
if (pid <= 0) return;
|
if (proc->pid <= 0) return;
|
||||||
lwsl_notice("killing process %d with signal: %d\n", pid, sig);
|
|
||||||
|
pid_t pid = proc->pid;
|
||||||
|
int sig = server->sig_code;
|
||||||
|
char *sig_name = server->sig_name;
|
||||||
|
|
||||||
|
lwsl_notice("killing process %d with signal: %d (%s)\n", pid, sig, sig_name);
|
||||||
int pgid = getpgid(pid);
|
int pgid = getpgid(pid);
|
||||||
if (uv_kill(pgid > 0 ? -pgid : pid, sig) != 0) {
|
if (uv_kill(pgid > 0 ? -pgid : pid, sig) != 0) {
|
||||||
lwsl_err("kill: %d, errno: %d (%s)\n", pid, errno, strerror(errno));
|
lwsl_err("kill: %d, errno: %d (%s)\n", pid, errno, strerror(errno));
|
||||||
@@ -423,7 +431,7 @@ callback_tty(struct lws *wsi, enum lws_callback_reasons reason,
|
|||||||
} else {
|
} else {
|
||||||
proc->state = STATE_KILL;
|
proc->state = STATE_KILL;
|
||||||
uv_read_stop((uv_stream_t *) &proc->pipe);
|
uv_read_stop((uv_stream_t *) &proc->pipe);
|
||||||
kill_process(proc->pid, server->sig_code);
|
kill_process(proc);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (server->once && server->client_count == 0) {
|
if (server->once && server->client_count == 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user