
Uns wird gesagt, dass ein TTY höchstens eine Sitzung steuern kann und dass TTYs darüber hinaus so gesteuert werden können, dass sie Hintergrundprozessgruppen innerhalb ihrer gesteuerten Sitzung nicht erlauben, in das TTY zu schreiben oder daraus zu lesen, wobei Ersteres durch die TOSTOP
Option gesteuert wird.
Wie ist es jedoch mit anderen Sitzungen, die auf ein TTY schreiben? Kann das irgendwie gesteuert werden? Angenommen tty1
und tty2
, beide mit Shells. Ich war überrascht, dass der folgende Befehl shell2
auf tty2
...
ls > /dev/tty1
... hat tatsächlich die Ausgabe von ls
on erzeugt tty1
, unabhängig davon, auf welche TOSTOP
Option in gesetzt war tty1
. Da shell2
es sich insgesamt um Teil einer anderen Sitzung handelt, dachte ich, dass es daran liegen könnte, weil die TOSTOP
Option tatsächlich das tut, was sie soll, wenn versucht wird, aus einer Hintergrundprozessgruppe zu schreiben. Kann mich jemand aufklären, was da los ist?
Antwort1
Die TOSTOP
Option (beschrieben beispielsweise inUnix Power Tools, oderLinux-CSH-Skript wird bei Ausführung mit & (bg) in den Status „Suspended“ (TTY-Ausgabe) versetzt) bezieht sich auf dieHintergrundProzesse. In dieser Situation haben Vordergrund und Hintergrund einebekanntBeziehung.
Wenn Ihr Prozess jedoch ein Terminal geöffnet hat, hat er (fast immer) Berechtigungen darauf und ein anderer Prozess, der Ihnen gehört (und in einem anderen Terminal ausgeführt wird),nichtPersonen mit dieser Beziehung könnten dasselbe Gerät öffnen und darauf schreiben.