aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-08-11 13:38:15 +0000
committer_ov4 <ov4@ov4.org>2026-08-11 13:38:15 +0000
commit52c77e35d0fc60de1ed4348534f36c84c3fb86d5 (patch)
treedd03984a3e01f1717b0bede4996416cbdb8dd9ef
parent7295ec259b56c7fb789bbc5491265d62635626bf (diff)
fix
-rw-r--r--tsh.cc10
1 files changed, 5 insertions, 5 deletions
diff --git a/tsh.cc b/tsh.cc
index fc9b34f..fbcdeeb 100644
--- a/tsh.cc
+++ b/tsh.cc
@@ -95,7 +95,7 @@ handler_t *Signal(int signum, handler_t *handler);
// built-in commands
void builtin_command_quit();
-vector<string> builtin_cmd_list = {"quit"};
+vector<string> builtin_cmd_list = {"quit", "fg", "bg", "jobs"};
/*
* main - The shell's main routine
@@ -192,7 +192,8 @@ void eval(char *cmdline)
// TODO
cout << "built-in" << endl;
if (strcmp(argv[0], "quit") == 0) builtin_command_quit();
- else return;
+ else if (strcmp(argv[0], "jobs") == 0) listjobs(jobs);
+ return;
}
sigset_t mask_sigchld, prev_mask, mask_all;
@@ -211,9 +212,8 @@ void eval(char *cmdline)
}
// parent
- job_t job;
sigprocmask(SIG_SETMASK, &mask_all, NULL);
- addjob(&job, pid, FG, cmdline);
+ addjob(jobs, pid, FG, cmdline);
sigprocmask(SIG_SETMASK, &prev_mask, NULL);
@@ -327,7 +327,7 @@ void sigchld_handler(int sig)
while ((pid = waitpid(-1, &status, WNOHANG)) > 0)
{
- deletejob(NULL, pid);
+ deletejob(jobs, pid);
atomic_print(pid);
}