Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Zugriffssteuerung für Terminals

&pagelevel(5)&pagelevel

Wenn ein Prozess in der Vordergrund-Prozessgruppe seines steuernden Terminals ist, dann ist ihm das Lesen von diesem Terminal erlaubt, so wie dies im Abschnitt "Eingaben verarbeiten und Daten lesen“ beschrieben ist. Für die Implementierungen, die Auftragssteuerung (job control) unterstützen, verursacht jeder Versuch eines Prozesses aus einer Hintergrund-Prozessgruppe, von seinem steuernden Terminal zu lesen, dass seiner Prozessgruppe das Signal SIGTTIN gesendet wird, sofern nicht einer der folgenden Fälle zutrifft:

  • Der lesende Prozess ignoriert oder blockiert das Signal SIGTTIN.

  • Die Prozessgruppe des lesenden Prozesses ist verwaist.

In diesen Fällen liefert die Funktion read() das Ergebnis –1, wobei errno gleich EIO gesetzt ist und kein Signal gesendet wird. Die voreingestellte Signalaktion für SIGTTIN ist, den Prozess anzuhalten, dem dieses Signal gesendet wird (siehe auch signal.h).

Wenn ein Prozess in der Vordergrund-Prozessgruppe seines steuernden Terminals ist, dann sind Schreiboperationen erlaubt, wie dies im Abschnitt "Daten schreiben und Ausgaben verarbeiten“ beschrieben ist. Versuche eines Prozesses aus einer Hintergrund-Prozessgruppe, auf sein steuerndes Terminal zu schreiben, verursachen, dass der Prozessgruppe das Signal SIGTTOU gesendet wird, sofern nicht einer der folgenden Spezialfälle gegeben ist:

  • Wenn TOSTOP nicht gesetzt oder TOSTOP gesetzt ist und der Prozess das Signal SIGTTOU ignoriert oder blockiert, darf der Prozess auf das Terminal schreiben und das Signal SIGTTOU wird nicht gesendet.

  • Wenn TOSTOP gesetzt ist, die Prozessgruppe des schreibenden Prozesses verwaist ist und der schreibende Prozess das Signal SIGTTOU nicht blockiert, dann liefert die Funktion write() das Ergebnis –1, wobei errno gleich EIO gesetzt ist und kein Signal gesendet wird.

Bestimmte Aufrufe von Funktionen, die Parameter des Terminals setzen, werden auf dieselbe Art behandelt wie Aufrufe von write(), ausser dass TOSTOP ignoriert wird; d.h. deren Wirkung ist dieselbe wie die eines Schreibversuchs auf das Terminal, wenn TOSTOP gesetzt ist (siehe auch Abschnitt "Lokalmodi“, tcdrain(), tcflow(), tcflush(), tcsendbreak() und tcsetattr()).