aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-08-13 14:51:00 +0000
committer_ov4 <ov4@ov4.org>2026-08-13 14:51:00 +0000
commit97179bb75cbfc43d94a10a34410a8f9752090aaa (patch)
treebadc811974d397e1dafd4ed5fd6bea97c30d2791
parent972fbd8cfce4e3b5bad2f119ba13585b73172f17 (diff)
update
-rwxr-xr-xautograder/sdriver.pl (renamed from sdriver.pl)0
-rw-r--r--autograder/trace01.txt (renamed from trace01.txt)0
-rw-r--r--autograder/trace02.txt (renamed from trace02.txt)0
-rw-r--r--autograder/trace03.txt (renamed from trace03.txt)0
-rw-r--r--autograder/trace04.txt (renamed from trace04.txt)0
-rw-r--r--autograder/trace05.txt (renamed from trace05.txt)0
-rw-r--r--autograder/trace06.txt (renamed from trace06.txt)0
-rw-r--r--autograder/trace07.txt (renamed from trace07.txt)0
-rw-r--r--autograder/trace08.txt (renamed from trace08.txt)0
-rw-r--r--autograder/trace09.txt (renamed from trace09.txt)0
-rw-r--r--autograder/trace10.txt (renamed from trace10.txt)0
-rw-r--r--autograder/trace11.txt (renamed from trace11.txt)0
-rw-r--r--autograder/trace12.txt (renamed from trace12.txt)0
-rw-r--r--autograder/trace13.txt (renamed from trace13.txt)0
-rw-r--r--autograder/trace14.txt (renamed from trace14.txt)0
-rw-r--r--autograder/trace15.txt (renamed from trace15.txt)0
-rw-r--r--autograder/trace16.txt (renamed from trace16.txt)0
-rw-r--r--tsh.cc10
18 files changed, 8 insertions, 2 deletions
diff --git a/sdriver.pl b/autograder/sdriver.pl
index 852bf3d..852bf3d 100755
--- a/sdriver.pl
+++ b/autograder/sdriver.pl
diff --git a/trace01.txt b/autograder/trace01.txt
index 9c8561e..9c8561e 100644
--- a/trace01.txt
+++ b/autograder/trace01.txt
diff --git a/trace02.txt b/autograder/trace02.txt
index e97643b..e97643b 100644
--- a/trace02.txt
+++ b/autograder/trace02.txt
diff --git a/trace03.txt b/autograder/trace03.txt
index be8869c..be8869c 100644
--- a/trace03.txt
+++ b/autograder/trace03.txt
diff --git a/trace04.txt b/autograder/trace04.txt
index 554df0e..554df0e 100644
--- a/trace04.txt
+++ b/autograder/trace04.txt
diff --git a/trace05.txt b/autograder/trace05.txt
index 03c1876..03c1876 100644
--- a/trace05.txt
+++ b/autograder/trace05.txt
diff --git a/trace06.txt b/autograder/trace06.txt
index bfa3890..bfa3890 100644
--- a/trace06.txt
+++ b/autograder/trace06.txt
diff --git a/trace07.txt b/autograder/trace07.txt
index 259a285..259a285 100644
--- a/trace07.txt
+++ b/autograder/trace07.txt
diff --git a/trace08.txt b/autograder/trace08.txt
index 49be19f..49be19f 100644
--- a/trace08.txt
+++ b/autograder/trace08.txt
diff --git a/trace09.txt b/autograder/trace09.txt
index 340d998..340d998 100644
--- a/trace09.txt
+++ b/autograder/trace09.txt
diff --git a/trace10.txt b/autograder/trace10.txt
index e7de996..e7de996 100644
--- a/trace10.txt
+++ b/autograder/trace10.txt
diff --git a/trace11.txt b/autograder/trace11.txt
index d2f8663..d2f8663 100644
--- a/trace11.txt
+++ b/autograder/trace11.txt
diff --git a/trace12.txt b/autograder/trace12.txt
index 88455e3..88455e3 100644
--- a/trace12.txt
+++ b/autograder/trace12.txt
diff --git a/trace13.txt b/autograder/trace13.txt
index d734cbc..d734cbc 100644
--- a/trace13.txt
+++ b/autograder/trace13.txt
diff --git a/trace14.txt b/autograder/trace14.txt
index 8086580..8086580 100644
--- a/trace14.txt
+++ b/autograder/trace14.txt
diff --git a/trace15.txt b/autograder/trace15.txt
index 2cc780e..2cc780e 100644
--- a/trace15.txt
+++ b/autograder/trace15.txt
diff --git a/trace16.txt b/autograder/trace16.txt
index 822ba14..822ba14 100644
--- a/trace16.txt
+++ b/autograder/trace16.txt
diff --git a/tsh.cc b/tsh.cc
index 6c291ab..a0d425c 100644
--- a/tsh.cc
+++ b/tsh.cc
@@ -363,9 +363,15 @@ void do_bgfg(char **argv)
{
LOG << "fg" << endl;
j->state = FG;
+
+ 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);
- sigprocmask(SIG_SETMASK, &prev, NULL);
+
waitfg(j->pid);
+
+ sigprocmask(SIG_SETMASK, &prev, NULL);
} else // bg
{
LOG << "bg" << endl;
@@ -388,7 +394,7 @@ void waitfg(pid_t pid)
{
sigset_t prev_with_sigchld_unblocked;
// get current blocked signals
- sigprocmask(0, NULL, &prev_with_sigchld_unblocked);
+ sigprocmask(0, nullptr, &prev_with_sigchld_unblocked);
sigdelset(&prev_with_sigchld_unblocked, SIGCHLD);
LOG << "waiting for pid "<< fgpid(jobs) << endl;
while (fgpid(jobs) != 0)