Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

mkfifo, mkfifoat - FIFO-Datei erzeugen

&pagelevel(4)&pagelevel

Definition

#include <sys/stat.h>

Optional
#include <sys/types.h> (Ende)

int mkfifo(const char *path, mode_t mode);
int mkfifoat(int fd, const char *path, mode_t mode);

Beschreibung

mkfifo() erzeugt eine neue FIFO-Gerätedatei (FIFO) mit dem Pfadnamen path. Die Zugriffsrechte der neuen FIFO werden durch mode initialisiert. Die Schutzbits des Arguments mode werden durch die Schutzbit-Maske des Prozesses verändert (siehe auch umask()).

Die Benutzernummer der FIFO wird auf die effektive Benutzernummer des aufrufenden Prozesses gesetzt. Die Gruppennummer der FIFO wird auf die effektive Gruppennummer des Prozesses gesetzt. Wenn jedoch das S_ISGID-Bit im übergeordneten Dateiverzeichnis gesetzt ist, wird die Gruppennummer der FIFO vom übergeordneten Verzeichnis übernommen.

Bei erfolgreicher Beendigung aktualisiert mkfifo() die stat-Strukturkomponenten st_atime, st_ctime und st_mtime der FIFO. Auch die stat-Strukturkomponenten st_ctime und st_mtime des Dateiverzeichnisses, das den neuen Eintrag enthält, werden aktualisiert (siehe sys/stat.h).

Die Funktion mkfifoat() ist äquivalent zu der Funktion mkfifo(), außer wenn der Parameter path einen relativen Pfad spezifiziert. In diesem Fall wird die neue FIFO-Gerätedatei nicht im aktuellen Dateiverzeichnis, sondern in dem mit dem Dateideskriptor fd verbundenen Dateiverzeichnis erstellt. Wurde der Dateideskriptor ohne O_SEARCH geöffnet, prüft die Funktionen, ob eine Suche im verbundenen Dateiverzeichnis mit den dem Dateiverzeichnis zugrunde liegenden Berechtigungen erlaubt ist. Wurde der Dateideskriptor mit O_SEARCH geöffnet, unterbleibt die Prüfung.

Wenn der Funktion mkfifoat() für den Parameter fd der Wert AT_FDCWD übergeben wurde, wird das aktuelle Dateiverzeichnis benutzt.

Returnwert

0

bei Erfolg.

 

-1

wenn keine FIFO erzeugt wurde. errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

mkfifo() und mkfifoat() schlagen fehl, wenn gilt: 

 

EACCES

Entweder besteht für eine Komponente des Pfades kein Suchrecht, oder es besteht kein Schreibrecht für das der neuen FIFO-Datei übergeordnete Dateiverzeichnis.

 

EEXIST

Die angegebene Datei existiert bereits.

 

ELOOP

Bei der Auflösung von path wurden zuviele symbolische Verweise angetroffen.

 

Erweiterung

 

EINVAL

Es wurde versucht, auf eine BS2000-Datei zuzugreifen. (Ende)

 

ENAMETOOLONG 



Die Länge des Arguments path überschreitet {PATH_MAX},oder eine Komponente des Pfadnamens ist länger als {NAME_MAX} und  {_POSIX_NO_TRUNC} ist aktiv.

 

ENOENT

Eine Komponente des Pfadpräfixes existiert nicht oder das Argument path zeigt auf die leere Zeichenkette.

 

ENOSPC

Das Dateiverzeichnis, das die neue Datei enthalten würde, kann nicht erweitert werden oder das Dateisystem kann keine Dateien mehr reservieren.

 

ENOTDIR

Eine Komponente des Pfadpräfixes ist kein Dateiverzeichnis.

 

EROFS

Die angegebene Datei befindet sich in einem nur zum Lesen freigegebenen Dateisystem.

 

Zusätzlich schlägt mkfifoat() fehl, wenn gilt: 

 

EACCES

Der Dateideskriptor fd wurde nicht mit O_SEARCH geöffnet und die dem Dateiverzeichnis zugrunde liegenden Berechtigungen erlauben nicht das Durchsuchen des Dateiverzeichnisses.

 

EBADF

Der Parameter path spezifiziert keinen absoluten Pfadnamen und der Parameter fd hat weder den Wert AT_FDCWD, noch enthält er einen gültigen zum Lesen oder Suchen geöffneten Dateideskriptor.

 

ENOTDIR

Der Parameter path spezifiziert keinen absoluten Pfadnamen und der Dateideskriptor fd ist nicht mit einem Dateiverzeichnis verbunden.

Hinweise

Wenn in mode andere Bits als die Datei-Schutzbits gesetzt sind, werden diese ignoriert.

path kann nur eine POSIX-Datei sein. 

Siehe auch

umask(), fcntl.h, sys/stat.h, sys/types.h.