elf_cntl(3E) elf_cntl(3E)
NAME
elfcntl - Dateideskriptor kontrollieren
SYNTAX
cc [option ...] datei ... -lelf [bibliothek ...]
#include <libelf.h>
int elfcntl(Elf *elf, ElfCmd cmd);
BESCHREIBUNG
elfcntl() weist die Bibliothek an, ihr Verhalten bezüglich eines
ELF-Deskriptors elf zu ändern. Wie unter elfbegin(3E) beschrieben,
kann ein ELF-Deskriptor mehrfache Aktivierungen besitzen, und mehrere
ELF-Deskriptoren können gemeinsam einen Dateideskriptor verwenden.
Grundsätzlich gelten die elfcntl-Kommandos für alle Aktivierungen von
elf. Darüber hinaus werden, wenn der ELF-Deskriptor mit einer Archiv-
datei verknüpft ist, die Deskriptoren für Komponenten aus dem Archiv,
wie unten beschrieben, beeinflußt. Soweit keine andere Aussage gemacht
wird, beeinträchtigen Operationen mit Archivkomponenten nicht den
Deskriptor für das umfassende Archiv.
Das Argument cmd gibt an, welche Aktionen ausgeführt werden sollen;
folgende Werte sind möglich:
ELFCFDDONE
Dieser Wert teilt der Bibliothek mit, daß der Dateideskriptor,
der mit elf verknüpft ist, nicht verwendet werden soll. Ein Pro-
gramm sollte dieses Kommando verwenden, wenn alle notwendigen
Informationen gelesen wurden und aus Leistungsgründen der Rest
der Datei nicht gelesen werden soll. Der Speicher für alle ausge-
führten Operationen bleibt gültig; weitere Dateioperationen, wie
zum Beispiel der erste Aufruf von elfgetdata() für einen
Abschnitt, schlagen jedoch fehl, wenn sich die betreffenden Daten
noch nicht im Speicher befinden.
ELFCFDREAD
Dieses Kommando ist ELFCFDDONE ähnlich; die Bibliothek wird
jedoch dazu gezwungen, den Rest der Datei zu lesen. Ein Programm
sollte dieses Kommando verwenden, wenn der Dateideskriptor
geschlossen werden muß, aber noch nicht alle Informationen aus
der Datei gelesen wurden. Nachdem elfcntl() das ELFCFDREAD-
Kommando ausgeführt hat, verwenden weitere Operationen, wie zum
Beispiel elfgetdata(), die Speicherversion der Datei, ohne den
Dateideskriptor benutzen zu müssen.
Wenn elfcntl() erfolgreich ist, wird Null zurückgeliefert. Ansonsten
war elf ein Nulldeskriptor oder ein Fehler trat auf; in diesem Falle
liefert die Funktion -1.
HINWEISE
Wenn das Programm die "Raw" Operationen [siehe elfrawdata(), wie
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
elf_cntl(3E) elf_cntl(3E)
unter elfgetdata(3E) beschrieben, und elfrawfile(3E)] nach dem Deak-
tivieren des Dateideskriptors mit ELFCFDDONE oder ELFCFDREAD ver-
wenden möchte, muß es die Rohoperationen ausdrücklich vorher ausfüh-
ren. Ansonsten schlagen die rohen Dateioperationen fehl. Der Aufruf
von elfrawfile() macht die gesamte Speicherabbildung verfügbar; nach-
folgende elfrawdata() Aufrufe werden dadurch unterstützt.
SIEHE AUCH
elf(3E), elfbegin(3E), elfgetdata(3E), elfrawfile(3E).
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98