Skip to main content
Das PTY- oder Pseudo-Terminal-Modul ermöglicht interaktive Terminalsitzungen innerhalb der Sandbox mit bidirektionaler Kommunikation in Echtzeit. Eine PTY-Sitzung unterstützt Echtzeit-Streaming, wodurch Terminalausgaben kontinuierlich über Callbacks bereitgestellt werden, sobald sie erzeugt werden, und bietet bidirektionale Eingabe, sodass Daten gesendet werden können, während die Sitzung noch läuft. Außerdem bietet sie ein interaktives Shell-Erlebnis mit vollständigem Terminalverhalten, einschließlich ANSI-Farben und Escape-Sequenzen, und unterstützt Sitzungspersistenz, sodass eine laufende Sitzung getrennt und später erneut verbunden werden kann.

PTY-Sitzung erstellen

Sie können sandbox.pty.create() verwenden, um eine interaktive Bash-Shell zu starten.
Das PTY startet eine interaktive Bash-Shell mit TERM=xterm-256color, sodass ANSI-Farben und Escape-Sequenzen wie erwartet funktionieren.

Zeitüberschreitung

Die Timeout-Einstellung ist konfigurierbar und bestimmt, wie lange die PTY-Sitzung aktiv bleibt. Sie können eine PTY-Sitzung unbegrenzt offen halten, indem Sie in JavaScript timeoutMs: 0 oder in Python timeout=0 festlegen. Standardmäßig verwendet die Sitzung ein Timeout von 60 Sekunden.

Eingabe an PTY senden

Sie können in JavaScript sendInput() oder in Python send_stdin() verwenden, um Daten an das Terminal zu senden. In JavaScript gibt sendInput() ein Promise zurück, und jede Terminalausgabe wird über den onData-Callback bereitgestellt, anstatt direkt zurückgegeben zu werden. In Python wird send_stdin() synchron abgeschlossen, und jede Terminalausgabe wird über den on_pty-Callback bereitgestellt, der an wait() übergeben wurde.

Terminalgröße ändern

Sie können resize() verwenden, um das PTY zu benachrichtigen, wenn der Benutzer die Größe des Terminalfensters ändert. Die cols- und rows-Werte repräsentieren die Terminalabmessungen in Zeichen statt in Pixeln.

Trennen und erneut verbinden

Eine PTY-Sitzung kann auch dann aktiv bleiben, wenn der Client die Verbindung trennt. Sie können sich von der Sitzung trennen und später mit einem neuen Datenhandler erneut verbinden. Dies kann verwendet werden, um sich von Netzwerkunterbrechungen zu erholen, Terminalzugriff von mehreren Clients zu unterstützen und den Sitzungszustand über erneute Verbindungen hinweg zu erhalten.

PTY beenden

Sie können kill() verwenden, um die PTY-Sitzung zu beenden.

Auf das Beenden des PTY warten

Sie können wait() verwenden, um zu blockieren, bis die Terminalsitzung endet, zum Beispiel wenn der Benutzer exit eingibt.

Interaktives Terminal (SSH-ähnlich)

Sie können dieselbe oben beschriebene sandbox.pty-API verwenden, um ein vollständig interaktives Terminal wie SSH zu erstellen, indem Sie Raw Mode, stdin-Weiterleitung und Ereignisse zur Änderung der Terminalgröße behandeln.
Zuletzt geändert am 10. August 2026