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 oderTOSTOP
gesetzt ist und der Prozess das SignalSIGTTOU
ignoriert oder blockiert, darf der Prozess auf das Terminal schreiben und das SignalSIGTTOU
wird nicht gesendet.Wenn
TOSTOP
gesetzt ist, die Prozessgruppe des schreibenden Prozesses verwaist ist und der schreibende Prozess das SignalSIGTTOU
nicht blockiert, dann liefert die Funktionwrite()
das Ergebnis –1, wobeierrno
gleichEIO
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()
).