Referenz - OPEN PIPE
Syntax: OPEN PIPE "Shellbefehl" FOR Dateimodus [ACCESS Zugriffsart] AS [#]Dateinummer
Typ: Anweisung
Kategorie: System
PIPE ist ein Gerät, auf das man mit INPUT # zugreifen kann. In PIPE wird die Ausgabe eines SHELL-Befehls gespeichert. Die Ausgabe dieses Befehls wird aber nicht auf den Bildschirm geleitet, sondern in einen Dateipuffer umgeleitet, auf den mit INPUT # und LINE INPUT # zugegriffen werden kann.
- '"Shellbefehl"' ist eine beliebige Kommandozeile, wie sie mit SHELL aufgerufen werden kann. Diese Kommandozeile wird normal ausgeführt.
- 'Dateimodus' gibt einen der Dateimodi INPUT, OUTPUT oder BINARY an. Bei BINARY wird zudem die Angabe der Zugriffsart erwartet. Der Zugriff auf den aufgerufenen Befehl erfolgt, je nach Angabe, über die Standardeingabe (stdin) oder die Standardausgabe (stdout) des Befehls.
- 'Zugriffsart' wird zusammen mit dem Dateimodus BINARY benötigt und lautet entweder READ oder WRITE.
- 'Dateinummer' ist eine Ganzzahl von 1 bis 255, über die später auf den Puffer zugegriffen wird. Sie darf nicht doppelt vergeben werden und verhält sich wie eine Dateinummer der OPEN-Anweisung.
Beispiel:
#IFDEF __FB_UNIX__
CONST TEST_COMMAND = "ls *"
#ELSE
CONST TEST_COMMAND = "dir *.*"
#ENDIF
DIM AS INTEGER nr = FREEFILE
DIM s AS STRING
OPEN PIPE TEST_COMMAND FOR INPUT AS #nr
DO UNTIL EOF(nr)
LINE INPUT #nr, s
PRINT s
LOOP
CLOSE #nr
SLEEP
Ein umfangreicheres Beispiel zu OPEN PIPE findet sich in der Code-Beispiel-Rubrik des FreeBASIC-Portals.
FreeBASIC unterstützt keine bidirektionalen Pipes. Diese müssen über die API-Funktionen des Betriebssystems initialisiert werden.
Unterschiede zu QB: neu in FreeBASIC
Plattformbedingte Unterschiede:
Der Dateimodus BINARY wird nicht von allen Plattformen unterstützt.
Unterschiede zu früheren Versionen von FreeBASIC:
- OPEN PIPE existiert seit FreeBASIC v0.15
- Ab v0.13 bis v0.14 existierte der analoge Befehl OPEN "PIPE:Shellbefehl" ...
Siehe auch:
OPEN (Anweisung), CLOSE, INPUT #, LINE INPUT #, EOF, SHELL, Dateien (Files)
Weitere Informationen:
Wikipedia-Artikel zu Pipe
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|