aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-08-13 15:10:05 +0000
committer_ov4 <ov4@ov4.org>2026-08-13 15:10:05 +0000
commitb17e1ff84557511a3cc0782c3e2ef102aad9d671 (patch)
tree462ca9b02a563ab6fdecd22dd3f82a147ef8d632
parent97179bb75cbfc43d94a10a34410a8f9752090aaa (diff)
fix
-rw-r--r--tsh.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/tsh.cc b/tsh.cc
index a0d425c..cc643ba 100644
--- a/tsh.cc
+++ b/tsh.cc
@@ -367,7 +367,12 @@ void do_bgfg(char **argv)
sigset_t prev_with_sigchld_blocked = prev;
sigaddset(&prev_with_sigchld_blocked, SIGCHLD);
sigprocmask(SIG_SETMASK, &prev_with_sigchld_blocked, NULL);
- kill(-(j->pid), SIGCONT);
+ if (kill(-(j->pid), SIGCONT) < 0)
+ {
+ cerr << "Cannot continue process " << j->pid;
+ sigprocmask(SIG_SETMASK, &prev, NULL);
+ return;
+ }
waitfg(j->pid);
@@ -422,7 +427,7 @@ void sigchld_handler(int sig)
while ((pid = waitpid(-1, &status, WNOHANG | WUNTRACED)) > 0)
{
- if (WIFSIGNALED(status) | WIFSTOPPED(status))
+ if (WIFSIGNALED(status) || WIFSTOPPED(status))
{
int jid = pid2jid(pid);
atomic_print("Job [");