Handle
Als Handle ({{#invoke:Vorlage:lang|full|CODE=en|SCRIPTING=Latn|SERVICE=englisch}} für „Griff“ oder „Henkel“) bezeichnet man in der Informatik einen eindeutigen Referenzwert zu einer vom Betriebssystem verwalteten Systemressource, wie z. B. Bildschirmobjekte oder einzelne Dateien auf Festplatten.<ref name="OsInDepth">{{#invoke:Vorlage:Literatur|f}}</ref><ref><templatestyles src="Webarchiv/styles.css" />{{#if:20130707142905
| {{#ifeq: 20130707142905 | *
| {{#if: Archivlink | {{#invoke:WLink|getEscapedTitle|Archivlink}} | {{#invoke:Webarchiv|getdomain|http://www.htl-steyr.ac.at/~morg/pcinfo/glossar/glos6o1f.htm}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20130707142905}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: Archivlink | {{#invoke:WLink|getEscapedTitle|Archivlink}} | {{#invoke:Webarchiv|getdomain|http://www.htl-steyr.ac.at/~morg/pcinfo/glossar/glos6o1f.htm}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20130707142905}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: Archivlink | {{#invoke:WLink|getEscapedTitle|Archivlink}} | {{#invoke:Webarchiv|getdomain|http://www.htl-steyr.ac.at/~morg/pcinfo/glossar/glos6o1f.htm}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: Archivlink | {{#invoke:WLink|getEscapedTitle|Archivlink}} | {{#invoke:Webarchiv|getdomain|http://www.htl-steyr.ac.at/~morg/pcinfo/glossar/glos6o1f.htm}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: Archivlink | {{#invoke:WLink|getEscapedTitle|Archivlink}} | {{#invoke:Webarchiv|getdomain|http://www.htl-steyr.ac.at/~morg/pcinfo/glossar/glos6o1f.htm}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: Archivlink | {{#invoke:WLink|getEscapedTitle|Archivlink}} | {{#invoke:Webarchiv|getdomain|http://www.htl-steyr.ac.at/~morg/pcinfo/glossar/glos6o1f.htm}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20130707142905|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.htl-steyr.ac.at/~morg/pcinfo/glossar/glos6o1f.htm}}
|| {{#if: || }}
}}{{#if: Archivlink
| {{#if: {{#invoke:WLink|isBracketedLink|Archivlink}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://www.htl-steyr.ac.at/~morg/pcinfo/glossar/glos6o1f.htm%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.htl-steyr.ac.at/~morg/pcinfo/glossar/glos6o1f.htm%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://www.htl-steyr.ac.at/~morg/pcinfo/glossar/glos6o1f.htm }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}} Handles bei Windows (deutsch)</ref><ref>stackoverflow.com Kurzbeschreibung (englisch)</ref>
Wenn ein Anwendungsprogramm eine solche Ressource verwenden will, erhält es durch den Aufruf einer geeigneten Systemfunktion (zum Beispiel zum Öffnen oder Erzeugen von Dateien) als Rückgabewert die Referenz, die zur weiteren Verwendung der Ressource durch Systemfunktionen anzugeben ist (etwa zum Lesen aus einer Datei).
Unter unixoiden Systemen erhalten Handles eine eindeutige ganzzahlige Nummer (Integerwert), die Filedescriptor genannt wird. Die Anzahl der möglichen Filedescriptoren ist begrenzt und kann beispielsweise mit dem Bash-Buildin Befehl ulimit -n eingestellt werden.
Das Betriebssystem prüft beim Öffnen einer Ressource die Zugriffsrechte, legt – falls benötigt – intern benötigte Verwaltungsstrukturen an und koordiniert weitere Zugriffsversuche anderer Anwendungen auf die betreffende Ressource. Gibt eine Anwendung die Ressource durch einen Schließen-Aufruf wieder frei, werden die Verwaltungsstrukturen wieder abgebaut, und der Handle wird ungültig.
Weitere Bezeichnungen, die je nach Verwendung auch eine speziellere Bedeutung erhalten, sind neben Handle (Microsoft Windows) Capability (akademisch) oder Deskriptor (POSIX). Die Terminologie ist über verschiedene Systeme hinweg nicht konsistent. Beispielsweise sind POSIX-Capabilities keine Referenzen auf konkrete Systemressourcen, sondern repräsentieren die Erlaubnis, eine gewisse Aktion durchzuführen.<ref>{{#invoke:Vorlage:Literatur|f}}</ref>
Wenn es sich bei der betreffenden Systemressource um eine Datei handelt, wird der Handle auch als Datei-Handle oder Dateideskriptor bezeichnet.
Ein Handle verbindet die Identifikation einer Systemressource mit Zugriffsrechten. So kann zum Beispiel eine Anwendung, die eine Datei durch einen Systemaufruf mit Schreibrechten öffnet, durch Erhalt des Handles nachfolgend Schreiboperationen auf der Datei ausführen, indem der Handle als Ziel der Operation angegeben wird.
Das Prinzip lässt sich durch den Vergleich mit einem Geschäftszeichen im Schriftverkehr mit Ämtern veranschaulichen. Als Bürger erhält man nicht unmittelbaren Zugang zu den Unterlagen, sondern nimmt durch Angabe eines Geschäftszeichens Bezug auf den bisherigen Vorgang.
Datei-Handle
Für die systemnahe Programmierung stellen Betriebssysteme Funktionen zum Öffnen oder Erstellen von Dateien bereit. Diese geben im Erfolgsfall eine ganze Zahl zurück, die eine Referenz auf einen Dateideskriptor (Datei-Handle) darstellt und die anschließend für weitere Operationen mit der Datei verwendet wird.<ref>{{#invoke:Vorlage:Literatur|f}}</ref>
In fast allen Implementierungen der Programmiersprache C für heutige Betriebssysteme erhalten die Standard-Datenströme stdin, stdout und stderr als Handle die Werte 0, 1 beziehungsweise 2. Dies ist jedoch nicht Bestandteil von Standard-C, sondern eine von UNIX-Betriebssystemen eingeführte und dann vielfach übernommene Konvention.<ref>{{#invoke:Vorlage:Literatur|f}}</ref>
Das NFS-Protokoll für Dateizugriffe über ein Netzwerk verwendet Datei-Handles zur Adressierung von Dateioperationen.
Weitere Bedeutungen
In Matlab erzeugt das Voranstellen des @-Zeichens vor eine Funktion einen Funktions-Handle, der mit Funktionszeigern beispielsweise in C vergleichbar ist.<ref>{{#invoke:Vorlage:Literatur|f}}</ref>
Im Windows-API ist HANDLE als Datentyp definiert, wobei weitere ressourcenspezifische Datentypen davon abgeleitet werden (z. B. HBITMAP oder HBRUSH).<ref>Windows data types. msdn.microsoft.com (englisch)</ref>
Ein Handle-System<ref>The Handle System – Website der Corporation for National Research Initiative (englisch)</ref> dient zur Vergabe und Verwaltung von Identifikatoren im World Wide Web, die auch als Handles bezeichnet werden. Ähnlich wie das Domain Name System stellt ein Handle-System in diesem Sinne ein Verfahren zur Auflösung von Namensräumen dar. Eine entsprechende Anwendung von solchen Handles, die im deutschsprachigen Raum bekannter ist, sind Digital Object Identifiers. Ein weiteres System sind die Persistent Uniform Resource Locators.
Literatur
Weblinks
- Details zur Handle-Verwendung bei der Windows-Programmierung. codeproject.com (englisch).
- ePIC Persistent Identifier Consortium for eResearch – Website des ePIC Persistent Identifier Consortium for eResearch als Dienstleister für Handles in der Forschung (englisch).
- Filehandle (Perl-spezifisch).
- Arbeiten mit Dateien (Perl-spezifisch).
Einzelnachweise
<references />