POSIX
Ganzzahl
Gleitpunkt
Funktion
Speicher
String
Zeit
I/O
Datei
Länge
Pfad
Rechte
Status
Verzeichnis
Traversion (XSI)
Traversion (BSD)
Globbing
Muster
Dateisystem
Benachrichtigung
Datenbank
GNU Datenbank
Benutzer
Prozess
Thread
IPC
Netzwerk
Kryptographie
Dateien und Pfade
Das Dateisystem ist hierarchisch aufgebaut.
Verzeichnisse enthalten Dateien und Unterverzeichnisse.
Ein Pfad ist eine durch Schrägstriche getrennte Liste von Namen.
Absolute Pfade beginnen bei der Wurzel und weisen den Weg in die Tiefe der Hierarchie;
Relative Pfade beginnen im aktuellen Arbeitsverzeichnis
und können mit ..
auf übergeordnete Verzeichnisse verweisen.
Pfad, Größe, Typ, Gerät
Zugriffsrechte für Benutzer (UID ),
Gruppe (GID ) und Andere
Zugriffszeiten (atime, mtime, ctime
)
limits.h
Die maximale Länge von Datei- und Pfadnamen hängt vom Dateisystem ab.
Für Systemaufrufe und praktische Zwecke gelten folgende Grenzen:
#define NAME_MAX 255 Obere Grenze für die Länge von Dateinamen
#define PATH_MAX 4096 Obere Grenze für die Länge von Pfadnamen, siehe pathconf
libgen.h
Verzeichnis- und Dateiname trennen.
char * basename (char * path) Entfernt Verzeichnispfad: /foo/bar/snafu.txt
char * dirname (char * path) Entfernt den Dateinamen: /foo/bar/snafu.txt
stdlib.h
Relativen Pfade auflösen und temporären Dateien erzeugen.
char * realpath (const char * path, char * resolved_path) Absoluter Pfad
Temporärdateien
char * mkdtemp (char * template) Temporäres Verzeichnis
int mkstemp (char * template) Temporäre Datei
int mkstemps (char * template, int suffixlen) … mit Suffix
int mkostemp (char * template, int flags) … mit Optionen
int mkostemps (char * template, int suffixlen, int flags) … mit Optionen und Suffix
unistd.h
Arbeitsverzeichnis finden und wechseln, Dateien verknüpfen und Konfiguration lesen.
Verzeichnisse
char * getcwd (char * buf, size_t max) Gibt das Arbeitsverzeichnis in Puffer aus
int chroot (const char * path) Ändert das Wurzelverzeichnis, benötigt CAP_SYS_CHROOT
int chdir (const char * path) Wechselt das Arbeitsverzeichnis
int rmdir (const char * path) Löscht ein Verzeichnis, wenn es keine Einträge enthält
Dateien
int unlink (const char * path) Löscht einen Dateieintrag
int link (const char * oldpath, const char * newpath) Erzeugt Link auf eine Datei
int linkat (int olddirfd, const char * oldpath,
int newdirfd, const char * newpath, int flags);
int symlink (const char * oldpath, const char * newpath) Erzeugt Symlink
ssize_t readlink (const char * path, char * buf, size_t len) Löst einen Symlink auf
int access (const char * path, int mode) Prüft Zugriffsrechte
int chown (const char * path, uid_t owner, gid_t group) Setzt Besitzer und Gruppe einer Datei, benötigt CAP_CHOWN
int lchown (const char * path, uid_t owner, gid_t group) Setzt Besitzer und Gruppe eines Symlinks
int truncate (const char * path, off_t length) Kürzt eine Datei auf eine bestimmte Länge
Konfiguration
long pathconf ( char * path, int name) Gibt Auskunft über Eigenschaften des Dateisystems
long fpathconf ( int fd, int name) "
long sysconf (int name) Gibt Auskunft über systemweite Konstanten
size_t confstr (int name, char * buf, size_t len) Liest konfigurationsabhängige Werte aus
sys/stat.h
Metadaten abfragen.
#define S_ISLNK (mode ) Symbolischer Verweis
#define S_ISREG (mode ) Reguläre Datei
#define S_ISDIR (mode ) Verzeichnis
#define S_ISCHR (mode ) Zeichengerät
#define S_ISBLK (mode ) Blockgerät
#define S_ISFIFO (mode ) FIFO
#define S_ISSOCK (mode ) Sockel
struct stat
dev_t st_dev Gerätenummer
ino_t st_ino Indexknotennummer
mode_t st_mode Zugriffsrechte
nlink_t st_nlink Referenzzähler
uid_t st_uid Besitzer
gid_t st_gid Gruppe
dev_t st_rdev Typ
off_t st_size Anzahl Oktette
blksize_t st_blksize Anzahl Blöcke
blkcnt_t st_blocks Belegte Blöcke
time_t st_atime Letzter Zugriff
time_t st_mtime Letzte Änderung
time_t st_ctime Letzte Statusänderung
int stat (const char * path, struct stat * buf) Ermittelt Status einer Datei
int lstat (const char * path, struct stat * buf) Ermittelt Status eines Symlinks
int chmod (const char * path, mode_t mode) Ändert Zugriffsrechte einer Datei
int mkdir (const char * path, mode_t mode) Erzeugt ein Verzeichnis
int mkfifo (const char * path, mode_t mode) Erzeugt eine FIFO
int mknod (const char * path, mode_t mode, dev_t dev) Erzeugt einen Dateisystem-Knoten
int mkdirat (int fd, const char * path, mode_t mode) Erzeugt Verzeichnis relativ zu einem anderen Verzeichnis
int mkfifoat (int fd, const char * path, mode_t mode) Erzeugt FIFO relativ zum Verzeichnis
int mknodat (int fd, const char * path, mode_t mode, dev_t dev) Erzeugt Dateisystem-Knoten relativ zum Verzeichnis
int fstat (int fd, struct stat * buf) Ermittelt Status einer geöffneten Datei
int fchmod (int fd, mode_t mode) Ändert Zugriffsrechte einer geöffneten Datei
mode_t getumask (void) Liefert Maske für Zugriffrechte
mode_t umask (mode_t mode) Setzt Maske für Zugriffrechte
dirent.h
Verzeichnis iterieren
ftw.h
Verzeichnisbaum traversieren (File Tree Walk )
int ftw (const char * path, fn1 , int flags)
int nftw (const char * path, fn2 , int nopen, int flags)
typedef FTW
int base
int level
int fn1 (const char * path, const struct stat * st, int type)
int fn2 (const char * path, const struct stat * st, int type, struct FTW * ftwbuf)
fts.h
Verzeichnisbaum traversieren (File Tree Scan ). Die
BSD -Variante
arbeitet analog zu
readdir
mit wiederholten Aufrufen von
fts_read
.
typedef FTS Zustandsautomat
struct _ftsent FTSENT
unsigned short fts_info Klassifizierung
char * fts_accpath Relativ zum CWD
char * fts_path Relativ zum Start
short fts_pathlen Länge des Pfades
char * fts_name Dateiname
short fts_namelen Länge des Namens
short fts_level Rekursionstiefe
int fts_errno Fehlercode
long fts_number Nutzlast
void * fts_pointer Nutzlast
struct _ftsent * fts_parent Elternverzeichnis
struct _ftsent * fts_link Nächster Eintrag
struct _ftsent * fts_cycle Zyklen
struct stat * fts_statp Metadaten
FTS * fts_open (char * path_argv[], int options, int (*compar) (const FTSENT **, const FTSENT **))
FTSENT * fts_read (FTS * ftsp) Nächster Eintrag
FTSENT * fts_children (FTS * ftsp, int instr) Verkettete Liste
int fts_set (FTS * ftsp, FTSENT * f, int instr)
int fts_close (FTS * ftsp)
glob.h
Dateinamen im aktuellen Verzeichnis mit Muster abgleichen.
typedef glob_t
size_t gl_pathc Anzahl der Pfade, die auf das Muster passen
char ** gl_pathv Zeiger auf eine Liste von passenden Pfaden
size_t gl_offs Initiale Größe
int glob (const char * pattern,
int flags,
int (* errfunc) (const char * epath, int eerrno),
glob_t * glob)
void globfree (glob_t * glob)
fnmatch.h
Zeichenkette mit Muster vergleichen.
sys/statvfs.h
Füllstand ermitteln
struct statvfs
unsigned long f_bsize Blockgröße
unsigned long f_frsize Fragmentgröße
fsblkcnt_t f_blocks Anzahl Fragmente im Dateisystem
fsblkcnt_t f_bfree Anzahl freier Blöcke
fsblkcnt_t f_bavail Anzahl freier Blöcke für unprivilegierte Benutzer
fsfilcnt_t f_files Anzahl Inodes
fsfilcnt_t f_ffree Anzahl freier Inodes
fsfilcnt_t f_favail Anzahl freier Inodes für unprivilegierte Benutzer
unsigned long f_fsid Identifikationsnummer
unsigned long f_flag Bitmaske für Flags
unsigned long f_namemax Maximale Länge für Dateinamen
int fstatvfs (int fd, struct statvfs * buf)
int statvfs (const char * path, struct statvfs * buf)
sys/inotify.h
Linux bietet eine Schnittstelle, um Ereignisse im Dateisystem zu
überwachen. Man fügt einem Überwacher-Objekt Pfade hinzu und kann
dann mit read
aufgetretene Ereignisse auslesen.
struct inotify_event
int wd Pfad-Deskriptor
uint32_t mask Aufgetretene Ereignisse
uint32_t cookie Cookie für zusammen gehörende Ereignisse (rename
)
uint32_t len Länge des zusätzlichen Speichers
char name[] Optionaler Speicherplatz für Pfadname
int inotify_init () Liefert Deskriptor für einen neuen Überwacher
int inotify_init1 (int flags)
int inotify_add_watch (int fd, const char * path, uint32_t mask) Fügt einen Pfad hinzu
int inotify_rm_watch (int fd, int wd) Entfernt einen Pfad
ndbm.h
NDBM
stellt eine einfache Name-Wert Datenbank zur Verfügung.
typedef DBM
DBM * dbm_open (const char * path, int oflag, mode_t mode)
void dbm_close (DBM * handle)
int dbm_error (DBM * handle)
int dbm_clearerr (DBM * handle)
typedef datum
void * dptr
size_t dsize
datum dbm_firstkey (DBM * handle)
datum dbm_nextkey (DBM * handle)
datum dbm_fetch (DBM * handle, datum key)
int dbm_delete (DBM * handle, datum key)
int dbm_store (DBM * handle, datum key, datum content, int mode)
gdbm.h
Die GNU -Variante
GDBM ,
binden mit -lgdbm
typedef GDBM_FILE
Datenzugriff
GDBM_FILE gdbm_open (const char * path, int block_size, int flags,
int mode, void (* fatal_func) (const char *))
void gdbm_close (GDBM_FILE dbf)
datum gdbm_firstkey (GDBM_FILE dbf)
datum gdbm_nextkey (GDBM_FILE dbf, datum key)
int gdbm_exists (GDBM_FILE dbf, datum key)
int gdbm_store (GDBM_FILE dbf, datum key, datum content, int flag)
datum gdbm_fetch (GDBM_FILE dbf, datum key)
int gdbm_delete (GDBM_FILE dbf, datum key)
Organisation
int gdbm_reorganize (GDBM_FILE dbf)
void gdbm_sync (GDBM_FILE dbf)
int gdbm_setopt (GDBM_FILE dbf, int option, void * value, int size)
int gdbm_fdesc (GDBM_FILE dbf)
int gdbm_count (GDBM_FILE dbf, gdbm_count_t * pcount)
int gdbm_version_cmp (int const a[], int const b[])
char * gdbm_strerror (gdbm_error errno)
Import/Export
int gdbm_import (GDBM_FILE dbf, const char * file, int flag)
int gdbm_import_from_file (GDBM_FILE dbf, FILE * fp, int flag)
int gdbm_export (GDBM_FILE dbf, const char * file, int flag,
int mode)
int gdbm_export_to_file (GDBM_FILE dbf, FILE * fp)
int gdbm_load (GDBM_FILE * dbf, const char * file, int flag,
int meta_mask, unsigned long * errline)
int gdbm_load_from_file (GDBM_FILE * dbf, FILE * fp, int flag,
int meta_mask, unsigned long * errline)
int gdbm_dump (GDBM_FILE dbf, const char * file, int format,
int flags, int mode)
int gdbm_dump_to_file (GDBM_FILE dbf, FILE * fp, int format)