mirror of
https://github.com/RGBCube/serenity
synced 2025-05-20 14:55:08 +00:00
Shell: Mark suspended children as such when receiving a SIGCHLD
This commit is contained in:
parent
05972668d1
commit
ff01cfa08a
1 changed files with 2 additions and 1 deletions
|
@ -85,7 +85,7 @@ int main(int argc, char** argv)
|
|||
Vector<u64> disowned_jobs;
|
||||
for (auto& job : jobs) {
|
||||
int wstatus = 0;
|
||||
auto child_pid = waitpid(job.value->pid(), &wstatus, WNOHANG);
|
||||
auto child_pid = waitpid(job.value->pid(), &wstatus, WNOHANG | WUNTRACED);
|
||||
if (child_pid < 0) {
|
||||
if (errno == ECHILD) {
|
||||
// The child process went away before we could process its death, just assume it exited all ok.
|
||||
|
@ -109,6 +109,7 @@ int main(int argc, char** argv)
|
|||
job.value->set_has_exit(126);
|
||||
} else if (WIFSTOPPED(wstatus)) {
|
||||
job.value->unblock();
|
||||
job.value->set_is_suspended(true);
|
||||
}
|
||||
}
|
||||
if (job.value->should_be_disowned())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue