Wie funktioniert -S Option des xterm (mit Pseudo-Terminalnamen und Beschreiber) Arbeit in Linux?

StackOverflow https://stackoverflow.com/questions/1166493

  •  19-09-2019
  •  | 
  •  

Frage

Grüße, Ich kam in einem Aufruf wie

während alten Solaris 2.4 Code auf CentOS 5.3 Portierung
/usr/bin/xterm -S%s%d ...

wobei% s ist eine zweistellige Ziffernfolge XX wie 00, 01 und% d ist ein numerischer Dateideskriptor. Das war offenbar eine Art und Weise xterm zu sagen, zu verwenden, / dev / ttypXX (ein Pseudo-Terminal-Slave), aber der Code scheint nicht mit dem Öffnen des entsprechenden Master, rief Rohr (2) statt und das Bestehen den schreiben fd als% d Substitution oben. Unter Solaris von dem spawner Ursachen Ausgang diesen Schreib fd Schreiben im xterm Kind erscheinen. In einem strace (1) sah ich keinen Versuch, alles unter / dev zu öffnen, durch die Art und Weise.

War es hilfreich?

Lösung

Nach dem solaris manpage , erstellt das Rohrsystem Aufruf zwei bidirektionale Rohre. Also auf solaris können Sie beiden fds zum Lesen und Schreiben verwenden:

  

Die Dateien im Zusammenhang mit fildes [0] und fildes 1 sind Ströme und sind beide   zum Lesen und Schreiben geöffnet.

Jedoch nach dem Rohr (2) -Manpage auf Linux:

  

Rohr () erzeugt ein Rohr, einen unidirektionale Datenkanal, der verwendet werden kann,   für die Interprozesskommunikation.

Hinweis auch die folgenden aus dem Rohr (7):

  

Auf manchen Systemen (aber nicht Linux), Leitungen sind bidirektional: Daten sein können   in beiden Richtungen zwischen den Rohrenden übertragen. Gemäß   POSIX.1-2001, Rohre müssen nur in eine Richtung sein. portable Anwendungen   vermeiden sollte Semantik Vertrauen auf bidirektionale Leitung.


Also, auf Linux Sie können pipefd a href nicht passieren <= "http://docs.oracle.com/cd/E23824_01/html/821-1463/pipe-2.html#scrolltoc" rel = "nofollow noreferrer“title = "Rohr (2) - Solaris 11 Mann Seiten, Kapitel 2: Systemaufrufe"> 1 , der Schreibende, um xterm, da sie einen fd für die bidirektionale Kommunikation erwartet. Damit es funktioniert, dann würden Sie verwenden openpty haben () und übergeben der Slave xterm fd nach unten.

AFAIK ist openpty auf Solaris nicht verfügbar; das scheint der Grund, Ihr Code es nicht verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top