•  Back 
  •  Das Laufwerk U: in MagiC 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
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