Die Tatsache, dass ein Prozess "disowned" ist, hat nur eine Bedeutung für die interaktive Shell, die diesen Prozess erstellt hat. Dies bedeutet, dass die Shell den Prozess nicht mehr in ihre Auftragstabelle aufnimmt und dass SIGHUP beim Beenden der Shell nicht an diesen Prozess gesendet wird. Es hängt nicht wirklich mit Ihren Fragen zusammen.
Was passiert mit den Ausgaben, die an ein gelöschtes virtuelles Terminal gesendet werden /dev/pts/x
? Ich habe selbst einige Tests durchgeführt und festgestellt, dass Geräte nicht zugänglich sind und erst wieder zugewiesen werden, wenn alle darauf verweisenden Dateideskriptoren geschlossen wurden. Daher sehe ich keinen Grund, warum Schreibvorgänge auf einem gelöschten Terminal gespeichert werden. Ich denke, dies wird nicht einmal von POSIX definiert.
Ich glaube nicht, dass es möglich ist, die Ausgabe eines Prozesses zu erfassen, der in ein Terminal schreibt, auch wenn das Terminal noch aktiv ist¹. Alles, was Sie tun können, ist, die direkte Eingabe in das Terminal zu übernehmen (dh Tastenanschläge oder simulierte Tastenanschläge durch den Master-Teil eines Pty). Wenn Prozesse auf stdin lesen würden, was auf ihre Terminals geschrieben ist, würde dies für die meisten Prozesse zu einer Selbstschleife führen.
Über die letzte Bemerkung zur Prozessbeendigung weiß ich nicht genau, was passiert, aber ich würde eher merkwürdige Verhaltensweisen bei Signalen (SIGTTOU, SIGTTIN, SIGHUP oder andere) im Zusammenhang mit dem Vordergrund- / Hintergrundstatus von Prozessgruppen während der Sitzung vermuten Leader-Exits (z. B. su
in dem von Ihnen erwähnten Fall).
Antwort auf die Änderung : Nein, in Bezug auf die Ausgabe ändert sich nichts, wenn ein Prozess abgelehnt wird: Er ist immer noch an sein steuerndes Terminal gebunden (es sei denn, er hat sich bereits getrennt, wie es Dämonen tun). Sie können das mit sehen ps
. Sie werden jedoch nicht in der Lage sein zu verwenden fg
/ bg
/ jobs
Befehle von dem Shell mehr für diesen Prozess zur Verfügung gestellt. Das bedeutet, dass es möglicherweise schwierig ist, ihm Eingaben vom Terminal zuzuführen (muss sich in der Vordergrundprozessgruppe befinden).
-
1. es sei denn, der Prozess ist dazu bereit oder wird mit einigen Debugging-Tools überfallen (siehe Kommentare oben).