1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 13:45:06 +00:00

Kernel: Don't send SIGCHLD to parent process if he has SA_NOCLDWAIT set.

Just transfer ownership of the dead process to the colonel and let the
scheduler reap it on next iteration.
This commit is contained in:
Andreas Kling 2019-03-01 15:47:07 +01:00
parent 5f4245789d
commit 274b0260f7
3 changed files with 18 additions and 2 deletions

View file

@ -2202,7 +2202,12 @@ void Process::finalize()
{
InterruptDisabler disabler;
if (auto* parent_process = Process::from_pid(m_ppid)) {
parent_process->send_signal(SIGCHLD, this);
if (parent_process->m_signal_action_data[SIGCHLD].flags & SA_NOCLDWAIT) {
// NOTE: If the parent doesn't care about this process, let it go.
m_ppid = 0;
} else {
parent_process->send_signal(SIGCHLD, this);
}
}
}