GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was nützt es, das `SIGCHLD`-Signal mit `sigaction(2)` zu ignorieren?

Das Standardverhalten von SIGCHLD soll das Signal verwerfen, aber der untergeordnete Prozess wird als Zombie gehalten, bis der übergeordnete Prozess wait() aufruft (oder eine Variante), um den Beendigungsstatus abzurufen.

Aber wenn Sie explizit sigaction() aufrufen mit der Disposition SIG_IGN , das bewirkt, dass es das Kind nicht in einen Zombie verwandelt – wenn das Kind es verlässt, wird es sofort geerntet. Siehe https://stackoverflow.com/a/7171836/1491895

Der POSIX-Weg, um dieses Verhalten zu erreichen, ist der Aufruf von sigaction mit handler = SIG_DFL und flags enthält SA_NOCLDWAIT . Dies ist in Linux seit 2.6.


Linux
  1. Rufen Sie eine Funktion auf, wenn das Programm beendet ist, mit ctrl c

  2. Wie verwendet man inotify richtig?

  3. Welchen Befehl verwende ich, um zu sehen, was der ECDSA-Schlüsselfingerabdruck meines Servers ist?

  4. Was ist die Verwendung von $ # in Bash

  5. Wie installiere ich PhantomJS für die Verwendung mit Python Selenium auf dem Raspberry Pi?

So verwenden Sie den who-Befehl in Linux mit Beispielen

Verwendung des RPM-Befehls (mit Beispielen)

Was ist die ONLYOFFICE Community-Funktion und warum sollten Sie sie verwenden?

Welches Zeichen soll verwendet werden, um ein Element an das Ende einer alphabetischen Liste zu stellen?

Wozu dient LLVM in Android NDK Toolchains?

Welche Signalnummern funktionieren mit dem Kill-Befehl?