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

Wann ist setsid() nützlich oder warum müssen wir Prozesse in Linux gruppieren?

Eine Sitzung ist eine Reihe von Prozessen, die sich ein steuerndes Terminal teilen. setsid ist nützlich, wenn Sie eine neue Sitzung starten möchten, weil Sie begonnen haben, mit einem neuen Terminal verbunden zu werden – wie zum Beispiel beim Starten einer Shell in einem Terminal-Emulator – oder wenn Sie einen Daemon benötigen (was Sie nicht möchten einem steuernden Terminal zugeordnet werden).

Die beste mir bekannte Erklärung zu diesen Aspekten findet sich in R.W. Stevens Advanced Programming in the Unix Environment .


Why do we need to group processes? Betrachten Sie die Situation, in der Sie sauber herunterfahren möchten, und dazu gehört auch, ein Signal an Ihre Kinder zu senden. Es gibt eine inhärente Rassenbedingung:Es wurde kein SIGCHLD empfangen, sodass Sie wissen, dass das Kind noch am Leben ist. Sie senden also ein Signal. Aber das Kind wird beendet, bevor das Signal gesendet wird, und ein anderer (unabhängiger) Prozess startet und erhält dieselbe PID wie das Kind, an das das Signal gesendet wurde. Das Signal geht dann an den neuen, nicht verwandten Prozess. Das ist schlecht. Anstatt also ein Signal an bestimmte PIDs zu senden, signalisieren Sie der Prozessgruppe. Wenn das Kind stirbt und ein neuer Prozess mit der ursprünglichen PID beginnt, ist der neue Prozess nicht Teil der Prozessgruppe und das oben beschriebene Problem wird vermieden.


Linux
  1. Warum mich mein Bedürfnis nach Kontrolle dazu gebracht hat, zu Linux zu wechseln

  2. 30 Übungen zu Linux-Prozessen für Systemadministratoren

  3. Linux – Wann sollte ich keinen -9 A-Prozess beenden?

  4. Warum wird Sigint nicht an den untergeordneten Prozess weitergegeben, wenn er an den übergeordneten Prozess gesendet wird?

  5. UNIX / Linux:3 Möglichkeiten, Signale an Prozesse zu senden

Ps-Befehl in Linux (Prozesse auflisten)

So beenden Sie Zombie-Prozesse in Linux

Prozessüberwachung unter Linux

Befehle für das Prozessmanagement in Linux

So senden Sie Prozesse unter Linux an den Hintergrund

Was ist ein gestoppter Prozess unter Linux?