Topic : TOS - das Betriebssystem Author : Version : tos.hyp (5. März 2013) Subject : Programmieren/Atari Nodes : 3001 Index Size : 93602 HCP-Version : 5 Compiled on : Atari @charset : atarist @lang : @default : Titel @help : @options : +g -i -s +x +zz -t4 @width : 70 View Ref-File11.11.2 Das Verzeichnis U:\PIPE TOS In diesem Verzeichnis werden Pipes abgelegt; es handelt sich dabei um temporäre Dateien, die insbesondere für den Datenaustausch zwischen Prozessen benutzt werden. Man unterscheidet unidirektionale und bidirektionale Pipes: erstere erlauben einen Datenfluß nur in einer Richtung, letztere können in beide Richtungen übertragen, jedoch nicht gleichzeitig. Bidirektionale Pipes finden z.B. beim Drag&Drop-Protokoll Verwendung. Pipes liefern beim Lesen per Fread grundsätzlich EOF (End-of-File) wenn sie leer sind, oder kein schreibender Prozeß vorhanden ist. Analog wird beim Schreiben per Fwrite der Wert EOF geliefert, falls kein lesender Prozess vorhanden ist. Der Zugriff erfolgt dabei rein asynchron, d.h. Applikationen warten auf das Lesen bzw. Schreiben und wecken ggf. eine andere Applikation wieder auf. Pipes werden automatisch gelöscht, wenn das letzte Programm, daß sie benutzt, die sie repräsentierende Datei geschlossen hat. Hinweis: MagiC unterstützt maximal 32 Pipes gleichzeitig. Ein Fseek auf Pipes führt grundsätztlich zur Rückgabe von 0L, d.h. der Dateizeiger kann nicht beeinflußt werden. Im Verzeichnisfenster erscheinen Pipes mit einer Länge von 2 bzw. 4k und dem Datum ihrer Erstellung. Falls beim Öffnen einer Pipe eine Kennung > 31 geliefert wird, kann die Systemfunktion Fselect nicht benutzt werden. Darüber hinaus ist ab MagiC 3 folgendes zu beachten: ∙ Pipes mit Modus 4 (Pseudo-TTYs) werden nicht unterstützt. MagiC kennt nur uni- und bidirektionale Pipes und erstellt bei Modus 4 eine bidirektionale Pipe. Der Hauptgrund für Pipes sind zur Zeit das Drag&Drop-Protokoll. ∙ Pipes liefern bei Finstat/Foutstat die Anzahl der vorhandenen bzw. noch freien Bytes im Block. ∙ Wird eine Pipe geschlossen, so werden alle wartenden Programme aufgeweckt, um evtl. mögliche Deadlocks zu vermeiden. Querverweis: Fcreate Fread Fwrite Fclose Fpipe Test auf Pipes