Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

fattach - einem Objekt im Namensraum des Dateisystems einen Dateideskriptor unter STREAMS zuordnen

&pagelevel(4)&pagelevel

Definition

#include <stropts.h>

int fattach (int fildes, const char *path);

Beschreibung

Die Funktion fattach() ordnet einem Objekt (Datei oder Dateiverzeichnis) im Namensraum des Dateisystems einen Dateideskriptor unter STREAMS zu, wobei fildes ein Pfadname zugeordnet wird. fildes muss ein gültiger, offener Dateideskriptor sein, der eine STREAMS-Datei repräsentiert. path ist ein Pfadname eines existierenden Objekts, dessen Eigentümer mit Schreiberlaubnis der Benutzer sein muss. Alternativ dazu kann der Benutzer auch besondere Rechte besitzen. Alle nachfolgenden Operationen auf path arbeiten mit der STREAMS-Datei, solange, bis die Zuordnung der STREAMS-Datei zum Knoten aufgehoben wird. fildes kann mehr als einem Pfad zugeordnet sein, d. h. dem Dateideskriptor können mehrere Namen zugeordnet sein.

Die Attribute des benannten Streams werden folgendermaßen initialisiert (siehe auch stat()): Zugriffsrechte, Benutzer- und Gruppennummern sowie die Dateizeiten werden gleich denen von path, die Anzahl der Verweise wird gleich 1 und Größe und Geräte-Identifikation werden gleich den Werten gesetzt, die das STREAMS-Gerät zu fildes besitzt. Werden irgendwelche Attribute des benannten Streams anschließend geändert (z. B. mit chmod()), dann werden weder die Attribute des zu Grunde liegenden Objekts noch die Attribute der STREAMS-Datei, auf die sich fildes bezieht, davon beeinflusst.

Dateideskriptoren, die sich auf das zu Grunde liegende Objekt beziehen und noch vor einem Aufruf von fattach() geöffnet wurden, beziehen sich weiterhin auf das zu Grunde liegende Objekt.

Returnwert

0

bei Erfolg.


-1

bei Fehler. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

fattach() schlägt fehl, wenn gilt:

 

EACCES

Eine Komponente des Pfades darf nicht durchsucht werden, oder der Benutzer ist der Eigentümer von path, besitzt jedoch keine Schreiberlaubnis für path.

 

EBADF

fildes ist kein gültiger, offener Dateideskriptor.

 

ENOENT

Eine Komponente des Pfadnamens existiert nicht, oder path zeigt auf eine leere Zeichenkette.

 

ENOTDIR

Eine Komponente des Pfadnamen-Präfix ist kein Dateiverzeichnis.

 

EPERM

Die effektive Benutzernummer des Prozesses ist nicht die des Eigentümers der mit path bezeichneten Datei und der Prozess hat nicht die entsprechenden Zugriffsrechte.

 

EBUSY

path ist derzeit ein Einhängpunkt oder diesem Pfad ist eine STREAMS-Datei zugeordnet.

 

ENAMETOOLONG



Die Länge von path überschreitet {PATH_MAX}, oder eine Komponente des Pfadnamens ist länger als {NAME_MAX} , während {_POSIX_NO_TRUNC} aktiv ist; oder
Die Auflösung eines symbolischen Verweises des Pfadnamens erzeugt ein Zwischenergebnis, das länger ist als {PATH_MAX}.

 

ELOOP

Bei der Übersetzung von path traten zu viele symbolische Verweise auf.

 

EINVAL

fildes repräsentiert keine STREAMS-Datei.

 

EREMOTE

path ist eine Datei in einem von fern eingehängten Dateiverzeichnis.

Hinweise

fattach() verhält sich ähnlich wie die ältere Funktion mount(), derart dass ein Objekt vorübergehend durch das Root-Verzeichnis des eingehängten Dateisystems ersetzt wird.
Bei fattach() muss das ersetzte Objekt kein Verzeichnis sein und die ersetzende Datei ist eine STREAMS-Datei.

Siehe auch

fdetach(), isastream(), stropts.h