Wie wird eine grafische Anwendung von einer Bash-Sitzung gestartet, die mit dieser Bash-Sitzung verbunden ist?


7

Wenn ich eine grafische Anwendung von einem Terminal aus starte, auf dem bash ausgeführt wird, ist diese Anwendung irgendwie mit dieser Bash-Sitzung verbunden. Wenn die Anwendungen beispielsweise Text ausgeben, wird dieser in der Bash-Sitzung angezeigt, von der aus er gestartet wird. Außerdem werden einige Anwendungen geschlossen, wenn ich das Terminal mit der Schaltfläche Schließen schließe, aber nicht, wenn ich das Terminal durch Beenden der Bash-Sitzung mit dem Befehl exit oder STRG + D schließe.

Wie wird eine grafische Anwendung von einer Bash-Sitzung gestartet, die mit dieser Bash-Sitzung verbunden ist?

Bonusfrage: Wie kann ich diese Verbindung überprüfen? wahrscheinlich auch manipulieren?

Antworten:


9

Die Anwendung ist auf zwei Arten verbunden: zum Bash und zum Terminal.

Die Verbindung zum Terminal besteht darin, dass die Standard-Streams (stdin, stdout und stderr) der Anwendung mit dem Terminal verbunden sind. Typische GUI-Anwendungen verwenden weder stdin noch stdout, senden jedoch möglicherweise Fehlermeldungen an stderr.

Die Verbindung zur Shell besteht darin, dass, wenn Sie die Anwendung mit gestartet haben foo &, sie der Shell als Job bekannt bleibt, wie unter Unterschied zwischen nohup, disown und & erläutert . Wenn Sie das Terminal schließen, erhält die Shell eine SIGHUP, die sie an ihre Jobs weitergibt. Wenn Sie exitdie Shell eingeben, werden die Jobs zuvor nicht angezeigt (dies ist bis zu einem gewissen Grad konfigurierbar).

Sie können die Shell-Verbindung mit dem disowneingebauten trennen . Sie können die Terminalverbindung nicht trennen, zumindest nicht ohne Methoden (mit einem Debugger), die das Programm zum Absturz bringen könnten.


s/severe/sever/g
Bis auf weiteres angehalten.

2

Ihre Shell startet diese Programme als untergeordnete Prozesse. Wenn Sie pstree ausführen, können Sie diese Beziehungen sehen. Ich weiß nicht, ob / wie Sie es manipulieren können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.