Bladeren bron

Kernel: Implement kill(0, signal)

This sends the signal to everyone in the same process group as the
calling process.
Andreas Kling 5 jaren geleden
bovenliggende
commit
32810a920f
1 gewijzigde bestanden met toevoegingen van 5 en 2 verwijderingen
  1. 5 2
      Kernel/Process.cpp

+ 5 - 2
Kernel/Process.cpp

@@ -1298,8 +1298,11 @@ int Process::sys$kill(pid_t pid, int signal)
     if (signal < 0 || signal >= 32)
     if (signal < 0 || signal >= 32)
         return -EINVAL;
         return -EINVAL;
     if (pid == 0) {
     if (pid == 0) {
-        // FIXME: Send to same-group processes.
-        ASSERT(pid != 0);
+        Process::for_each_in_pgrp(pgid(), [&](auto& process) {
+            process.send_signal(signal, this);
+            return IterationDecision::Continue;
+        });
+        return 0;
     }
     }
     if (pid == -1) {
     if (pid == -1) {
         // FIXME: Send to all processes.
         // FIXME: Send to all processes.