aboutsummaryrefslogtreecommitdiff
path: root/tsh.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tsh.cc')
-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 [");