C Standardbibliothek
Das C Standardbibliothek oder libc ist der Standardbibliothek für die C Programmiersprache, wie in der angegeben ISO c Standard.[1] Ausgehend vom Original Ansi c Standard, es wurde gleichzeitig entwickelt wie Die C -Bibliotheksposix -Spezifikation, das ist ein Superset davon.[2][3] Da wurde Ansi C von der übernommen Internationale Standardisierungsorganisation,[4] Die C -Standardbibliothek wird auch als die genannt ISO C -Bibliothek.
Die C -Standardbibliothek bietet Makros, Typ Definitionen und Funktionen für Aufgaben wie z. Saite Handhabung, mathematische Berechnungen, Eingangs-/Ausgangsverarbeitung, Speicherverwaltungund mehrere andere Betriebssystem Dienstleistungen.
Programmierschnittstelle
Header -Dateien

Das Programmierschnittstelle (API) der C -Standardbibliothek wird in einer Reihe von deklariert Header -Dateien. Jede Header -Datei enthält eine oder mehrere Funktionserklärungen, Datentypdefinitionen und Makros.
Nach einer langen Zeit der Stabilität drei neue Header -Dateien (ISO646.H
, wchar.h
, und WCTTYPE.H
) wurden mit hinzugefügt mit Normativer Addendum 1 (NA1), eine Ergänzung zum C -Standard von C im Jahr 1995. Sechs weitere Header -Dateien (komplex.h
, Fenv.h
, inttypes.h
, stdbool.h
, stdint.h
, und tgmath.h
) wurden mit hinzugefügt mit C99, eine Überarbeitung des 1999 veröffentlichten C -Standards und fünf weitere Dateien (stdalign.h
, Stdatomic.h
, stdnoreturn.h
, threads.h
, und uchar.h
) mit C11 Insgesamt im Jahr 2011 gibt es jetzt 29 Header -Dateien:
Name | Aus | Beschreibung |
---|---|---|
| Enthält die behaupten Makro, verwendet, um logische Fehler und andere Arten von Fehler in Debugging -Versionen eines Programms zu erkennen. | |
| C99 | A Funktionen zum Manipulieren komplexe Zahlen. |
| Definiert Funktionen Wird verwendet, um Zeichen nach ihren Typen zu klassifizieren oder zwischen dem oberen und unteren Fall auf eine Weise zu konvertieren, die unabhängig vom verwendeten ist Zeichensatz (Typisch ASCII oder eine seiner Erweiterungen, obwohl Implementierungen verwendet werden Ebcdic sind auch bekannt). | |
| Für Testfehlercodes, die von Bibliotheksfunktionen gemeldet wurden. | |
| C99 | Definiert a Funktionen zur Kontrolle Schwimmpunkt Umgebung. |
| Definiert Makrokonstanten Angabe der implementierungsspezifischen Eigenschaften der Schwimmpunkt Bibliothek. | |
| C99 | Definiert Ganzzahl genaue Breite. |
| Na1 | Definiert mehrere Makros Diese implementieren alternative Möglichkeiten, um mehrere Standard -Token auszudrücken. Für das Programmieren ISO 646 Variante Zeichensätze. |
| Definiert Makrokonstanten Angabe der implementierungsspezifischen Eigenschaften der Ganzzahltypen. | |
| Definiert Lokalisierungsfunktionen. | |
| Definiert gemeinsame mathematische Funktionen. | |
| Erklärt die Makros setjmp und longjmp , die für nicht lokale Ausgänge verwendet werden. | |
| Definiert Signalhandhabungsfunktionen. | |
| C11 | Zum Abfragen und Angeben der Ausrichtung von Objekten. |
| Für den Zugriff auf eine unterschiedliche Anzahl von Argumenten, die an Funktionen übergeben wurden. | |
| C11 | Zum atomare Operationen auf Daten, die zwischen Threads geteilt werden. |
| C99 | Definiert ein boolescher Datentyp. |
| Definiert mehrere nützliche Typen und Makros. | |
| C99 | Definiert Ganzzahl genaue Breite. |
| Definiert Kerneingangs- und Ausgangsfunktionen | |
| Definiert Numerische Konvertierungsfunktionen, Pseudo-Random-Zahlengenerierungsfunktionen, Speicherzuweisung, Prozesskontrollfunktionen | |
| C11 | Zur Angabe von Funktionen ohne Rückkehr |
| Definiert Saitenhandhabungsfunktionen | |
| C99 | Definiert Typ-generische mathematische Funktionen. |
| C11 | Definiert Funktionen für die Verwaltung mehrerer Mehrfach Themen, Mutexes und Zustandsvariablen |
| Definiert Datums- und Zeithandhabungsfunktionen | |
| C11 | Typen und Funktionen zum Manipulieren Unicode Figuren |
| Na1 | Definiert Weitnacht-Handling-Funktionen |
| Na1 | Definiert Funktionen Wird verwendet, um breite Zeichen nach ihren Typen zu klassifizieren oder zwischen oberem und unteren Fall zu konvertieren |
Drei der Header -Dateien (komplex.h
, Stdatomic.h
, und threads.h
) sind bedingte Funktionen, die Implementierungen nicht unterstützen müssen.
Das Posix Standard fügte mehrere nicht standardmäßige C-Header für Unix-spezifische Funktionen hinzu. Viele haben ihren Weg zu anderen Architekturen gefunden. Beispiele beinhalten fcntl.h
und Unistd.h
. Eine Reihe anderer Gruppen verwenden andere nicht standardmäßige Header - die GNU C -Bibliothek hat alloca.h
und HP OpenVMS hat die va_count ()
Funktion.
Dokumentation
Auf UNIX-ähnlichen Systemen wird die maßgebliche Dokumentation der tatsächlich implementierten API in Form von angegeben Mannseiten. Auf den meisten Systemen befinden sich MAN -Seiten zu Standardbibliotheksfunktionen in Abschnitt 3; Abschnitt 7 kann einige generische Seiten zugrunde liegenden Konzepten enthalten (z. Mann 7 Math_error
in Linux).
Implementierungen
Unix-artig Systeme haben normalerweise eine C -Bibliothek in gemeinsame Bibliothek Formular, aber die Header -Dateien (und Compiler Toolchain) können in einer Installation nicht vorhanden sein, sodass C -Entwicklung möglicherweise nicht möglich ist. Die C-Bibliothek wird als Teil des Betriebssystems auf UNIX-ähnlichen Systemen angesehen. Die C -Funktionen, einschließlich der ISO C -Standard, werden von Programmen häufig verwendet und werden als nicht nur eine Implementierung von etwas in der C -Sprache, sondern auch angesehen de facto Teil der Betriebssystemschnittstelle. UNIX-ähnliche Betriebssysteme können im Allgemeinen nicht funktionieren, wenn die C-Bibliothek gelöscht wird. Dies gilt für Anwendungen, die dynamisch im Gegensatz zu statisch verknüpften sind. Ferner arbeitet der Kernel selbst (zumindest im Fall von Linux) unabhängig von Bibliotheken.
Auf Microsoft Windows, den dynamischen Kernbibliotheken (Core System) (Dlls) Bereitstellung einer Implementierung der C -Standardbibliothek für die Microsoft Visual C ++ Compiler V6.0; Die C -Standardbibliothek für neuere Versionen des Microsoft Visual C ++ - Compiler wird von jedem Compiler einzeln sowie einzeln bereitgestellt umverteilbar Pakete. Kompilierte in C geschriebene Anwendungen sind entweder statisch mit einer C -Bibliothek verknüpft oder mit einer dynamischen Version der Bibliothek verknüpft, die mit diesen Anwendungen versendet wird, anstatt sich darauf zu verlassen, dass sie sich auf den Zielsystemen vorstellen. Funktionen in der C -Bibliothek eines Compiler werden nicht als Schnittstellen zu Microsoft Windows angesehen.
Es gibt viele andere Implementierungen, die sowohl mit verschiedenen Betriebssystemen als auch mit C -Compilern ausgestattet sind. Einige der beliebten Implementierungen sind die folgenden:
- Das BSD LIBC, verschiedene Implementierungen mit verteilt mit BSD-Abgeleitete Betriebssysteme
- GNU C -Bibliothek (glibc), verwendet in Gnu Hurd, Gnu/kfreebsd und Linux
- Microsoft C Laufzeitbibliothek, Teil von Microsoft Visual C ++
- Diätlibc, eine alternative kleine Implementierung der C-Standardbibliothek (MMU-ohne)
- μclibc, eine C -Standardbibliothek für eingebettete μclinux Systeme (MMU-ohne)
- UCLIBC-NG, eine eingebettete C -Bibliothek, Gabel von μclibc, die noch erhalten bleibt, mit Speicherverwaltungseinheit (MMU) Unterstützung
- Newlib, eine C-Standardbibliothek für eingebettete Systeme (MMU-ohne)[5] und verwendet in der Cygwin GNU -Verteilung für Windows
- Klibchauptsächlich zum Booten von Linux -Systemen
- Musl, eine weitere leichte C -Standardbibliotheksimplementierung für Linux -Systeme[6]
- Bionisch, ursprünglich von Google für das Android -Embedded -System -Betriebssystem entwickelt, das von BSD LIBC abgeleitet ist
Compiler-integrierte Funktionen
Einige Compiler (zum Beispiel, GCC[7]) Integrierte Versionen vieler Funktionen in der C-Standardbibliothek; Das heißt, die Implementierungen der Funktionen werden in die kompilierten Objektdateiund das Programm ruft die integrierten Versionen anstelle der Funktionen in der C-Bibliothek auf gemeinsames Objekt Datei. Dies reduziert den Überkopf in der Reihe Varianten und erlaubt andere Formen von Optimierung (Wie der Compiler das kennt Kontrollfluss Eigenschaften der eingebauten Varianten), können jedoch beim Debuggen Verwirrung verursachen (z. B. können die integrierten Versionen nicht ersetzt werden instrumentiert Varianten).
Die integrierten Funktionen müssen sich jedoch wie gewöhnliche Funktionen gemäß ISO C verhalten. Die Hauptimplikation ist, dass das Programm in der Lage sein muss, einen Zeiger auf diese Funktionen zu erstellen, indem sie ihre Adresse annehmen, und die Funktion durch diesen Zeiger aufzurufen. Wenn zwei Zeiger auf die gleiche Funktion in zwei verschiedenen Übersetzungseinheiten im Programm abgeleitet sind, müssen diese beiden Zeiger gleich vergleichen. Das heißt, die Adresse wird von dem Namen der Funktion gelöst, die eine externe (programmweite) Verknüpfung aufweist.
Verknüpfung, libm
Unter FreeBSD[8] und Glibc,[9] Einige Funktionen wie sin () sind standardmäßig nicht in Verbindung gebracht und werden stattdessen in der mathematischen Bibliothek gebündelt libm. Wenn einer von ihnen verwendet wird, muss der Linker die Richtlinie erhalten -lm
. POSIX verlangt, dass der C99 -Compiler unterstützt -lm
und dass die Funktionen in den Headern deklariert wurden math.h
, komplex.h
, und Fenv.h
sind zur Verknüpfung erhältlich, wenn -lm
wird angegeben, gibt jedoch nicht an, ob die Funktionen standardmäßig verknüpft sind.[10] Musl erfüllt diese Anforderung, indem er alles in eine einzige Bibliothek in Libc einbringt und ein leeres LIBM bereitstellt.[11]
Erkennung
Gemäß dem C -Standard das Makro __Stdc_hosted__
soll definiert werden 1 Wenn die Implementierung gehostet wird. Eine implementierte Implementierung hat alle vom C -Standard angegebenen Header. Eine Implementierung kann auch sein freistehend Was bedeutet, dass diese Header nicht vorhanden sind. Wenn eine Implementierung ist freistehend, es soll definieren __Stdc_hosted__
zu 0.
Probleme und Problemumgehungen
Pufferüberlaufschwachstellen
Einige Funktionen in der C -Standardbibliothek waren dafür berüchtigt, sie zu haben Pufferüberlauf Schwachstellen und im Allgemeinen fördern die Buggy -Programmierung seit ihrer Einführung.[a] Die am stärksten kritisierten Gegenstände sind:
- String-Manipulationsroutinen, einschließlich
Strcpy ()
undStrcat ()
, mangels Grenzenprüfung und mögliche Pufferüberläufe, wenn die Grenzen nicht manuell überprüft werden. - String -Routinen im Allgemeinen, für NebenwirkungenVerantwortungsloser Pufferverbrauch fördern, nicht immer gültig garantiert null-terminiert Ausgabe, Berechnung der linearen Länge;[b]
-
printf ()
Familie von Routinen, um die zu verderben Ausführungsstapel Wenn die Formatzeichenfolge nicht mit den angegebenen Argumenten übereinstimmt. Dieser grundlegende Fehler schuf eine ganze Klasse von Angriffen: Format -String -Angriffe; -
erhält ()
undscanf ()
Familie von E/A -Routinen, aus mangelnder (entweder oder einfacher) Eingablängenprüfung.
Außer dem extremen Fall mit erhält ()
Alle Sicherheitslücken können vermieden werden, indem Hilfscode eingeführt wird, um die Speicherverwaltung, die Grenzenprüfung, die Eingabeprüfung usw. durchzuführen. Dies geschieht häufig in Form von Wrappern, die die Standardbibliotheksfunktionen sicherer und einfacher machen. Dies stammt aus so früh wie Die Praxis der Programmierung Buch von B. Kernighan und R. Pike, wo die Autoren üblicherweise Wrapper verwenden, die Fehlermeldungen drucken und das Programm beenden, wenn ein Fehler auftritt.
Das ISO C-Komitee veröffentlichte technische Berichte TR 24731-1[12] und arbeitet an TR 24731-2[13] Vorschläge der Übernahme einiger Funktionen mit Grenzenprüfung und automatischer Pufferzuweisung entsprechend. Ersteres hat schwerwiegende Kritik mit etwas Lob erfüllt,[14][15] Letzteres erhielt gemischte Antworten. Trotzdem wurde TR 24731-1 in die C-Standardbibliothek von Microsoft implementiert, und der Compiler gibt Warnungen bei der Verwendung alter "unsicherer" Funktionen aus.
Fadenprobleme, Anfälligkeit für Rassenbedingungen
Das Strerror ()
Routine wird dafür kritisiert Faden unsicher und ansonsten anfällig für Rennbedingungen.
Fehlerbehandlung
Die Fehlerbehandlung der Funktionen in der C -Standardbibliothek ist nicht konsistent und manchmal verwirrend. Gemäß der Linux -Handbuchseite Mathematische Fehler
, "Die aktuelle (Version 2.8) Situation unter GLIBC ist chaotisch. Die meisten (aber nicht alle) Funktionen werfen Ausnahmen von Fehlern auf Errno. Ein paar Funktionen gesetzt Errno, aber erheben Sie keine Ausnahme. Nur wenige Funktionen tun auch nicht. "[16]
Standardisierung
Das Original C Sprache stellte keine integrierten Funktionen wie E/A-Operationen vor, im Gegensatz zu herkömmlichen Sprachen wie z. Cobol und Forran. Im Laufe der Zeit haben die Benutzergemeinschaften von C gemeinsamen Ideen und Implementierungen von sogenannten C -Standardbibliotheken geteilt. Viele dieser Ideen wurden schließlich in die Definition der standardisierten C -Sprache aufgenommen.
Beide Unix und c wurden bei erstellt bei AT & T's Bell Laboratories In den späten 1960er und frühen 1970er Jahren. In den 1970er Jahren wurde die C -Sprache immer beliebter. Viele Universitäten und Organisationen begannen, ihre eigenen Sprachvarianten für ihre eigenen Projekte zu schaffen. Zu Beginn der 1980er Jahre wurde Kompatibilitätsprobleme zwischen den verschiedenen C -Implementierungen offensichtlich. 1983 the American National Standards Institute (ANSI) bildete ein Komitee, um eine Standardspezifikation von C bekannt zu machen, die als "bezeichnet wird"Ansi c"Diese Arbeit gipfelte in der Schaffung des sogenannten C89-Standards im Jahr 1989. Teil des resultierenden Standards war ein Satz von Software -Bibliotheken genannt die ANSI C -Standardbibliothek.
POSIX -Standardbibliothek
Posix, ebenso gut wie SusGeben Sie eine Reihe von Routinen an, die über denen in der Basis -C -Standardbibliothek verfügbar sein sollten. Die POSIX -Spezifikation enthält unter anderem Header -Dateien für, unter anderem. Multi-Threading, Networking, und Reguläre Ausdrücke. Diese werden häufig neben der C -Standardbibliotheksfunktionalität mit unterschiedlichem Graden der Nähe implementiert. Zum Beispiel, Glibc implementiert Funktionen wie z. Gabel
innerhalb libc.so
, Aber vorher Nptl wurde in glibc zusammengeführt und bildete eine separate Bibliothek mit einem eigenen Linker -Flag -Argument. Oft wird diese von POSIX spezifizierte Funktionalität als Teil der Bibliothek angesehen. Die grundlegende C -Bibliothek kann als ANSI oder identifiziert werden ISO C Bibliothek.
BSD LIBC
BSD LIBC ist eine Superset der POSIX -Standardbibliothek, die von den C -Bibliotheken unterstützt wird, die enthalten sind BSD Betriebssysteme wie zum Beispiel Freebsd, Netbsd, OpenBSD und Mac OS. BSD LIBC hat einige Erweiterungen, die nicht im ursprünglichen Standard definiert sind, von denen viele erstmals 1994 erschienen sind 4.4bs Veröffentlichung (die erste, die nach dem ersten Standard 1989 weitgehend entwickelt wurde). Einige der Erweiterungen von BSD LIBC sind:
-
sys/tree.h
- enthält eine Implementierung von Rot -Schwarz -Baum und Spreizbaum[17][18] -
sys/queue.h
- Implementierungen von Verlinkte Liste, Warteschlangen, Schwanzwarteschlange usw.[19][20] -
fGetln ()
- definiert instdio.h
. Dies kann verwendet werden, um eine Dateizeile für Zeile zu lesen.[21][22][23] -
fts.h
- Enthält einige Funktionen, um eine Dateihierarchie zu durchqueren[24][25] -
db.h
- Einige Funktionen zur Verbindung mit dem Berkeley DB[26][27] -
strlcat ()
undstrlcpy ()
- sichere Alternativen fürstrncat ()
undstrncpy ()
[28][29][30][31][32] -
err.h
- Enthält einige Funktionen zum Drucken formatierter Fehlermeldungen[33][34] -
vis.h
- enthält dievis ()
Funktion. Diese Funktion wird verwendet, um nicht druckbare Zeichen in einem visuellen Format anzuzeigen.[35][36][37]
Die C -Standardbibliothek in anderen Sprachen
Einige Sprachen enthalten die Funktionalität der Standard -C -Bibliothek in ihren eigenen Bibliotheken. Die Bibliothek kann angepasst werden, um besser zur Struktur der Sprache zu passen, aber die Betriebssemantik werden ähnlich gehalten. Das C ++ Die Sprache enthält beispielsweise die Funktionalität der C -Standardbibliothek in der Namespace std
(z.B., std :: printf
, std :: atoi
, std :: feof
) in Header -Dateien mit ähnlichen Namen wie die C (CSTDIO
, cmath
, CSTDLIB
, etc.). Andere Sprachen, die ähnliche Ansätze verfolgen D, Perl, Rubin und die Hauptumsetzung von Python bekannt als Cpython. In Python 2 werden beispielsweise die integrierten Dateiobjekte als "implementiert mit C's stdio
Paket",[38] Damit werden die verfügbaren Operationen (offen, lesen, schreiben usw.) das gleiche Verhalten wie die entsprechenden C -Funktionen haben. Rost Hat eine Kiste namens libc Dadurch können mehrere C -Funktionen, Strukturen und andere Typdefinitionen verwendet werden.[39]
Vergleich zu Standardbibliotheken anderer Sprachen
Die C -Standardbibliothek ist im Vergleich zu den Standardbibliotheken einiger anderer Sprachen gering. Die C -Bibliothek bietet eine grundlegende Reihe mathematischer Funktionen, String Manipulation, Geben Sie Conversions einund Datei und Konsolenbasierte I/O. Es enthält keinen Standardsatz von "Behältertypen" wie C ++ Standard -Vorlagenbibliothek, geschweige denn die vollständige grafische Benutzeroberfläche (GUI) Toolkits, Netzwerkwerkzeuge und Fülle anderer Funktionen, die Java und die .NET Framework standardmäßig bereitstellen. Der Hauptvorteil der kleinen Standardbibliothek besteht darin, dass die Bereitstellung einer funktionierenden ISO -C -Umgebung viel einfacher ist als bei anderen Sprachen, und folglich ist es vergleichsweise einfach, C auf eine neue Plattform zu portieren.
Siehe auch
Anmerkungen
- ^ Morris Worm Das nutzt die bekannte Verwundbarkeit in
erhält ()
wurden bereits 1988 geschaffen. - ^ In der C -Standardbibliothek haben die Berechnung der Stringlänge und die Suche nach dem Ende einer Zeichenfolge lineare Zeitkomplexitäten und sind ineffizient, wenn sie wiederholt in denselben oder verwandten Zeichenfolgen verwendet werden
Verweise
- ^ ISO/IEC (2018). ISO/IEC 9899: 2018 (e): Programmiersprachen - C. §7
- ^ "Die GNU C -Bibliothek - Einführung". gnu.org. Abgerufen 2013-12-05.
- ^ "Unterschied zwischen C -Standardbibliothek und C POSIX -Bibliothek". stackoverflow.com. 2012. Abgerufen 2015-03-04.
- ^ "C Standards". Keil. Abgerufen 24. November 2011.
- ^ "Re: Unterstützt Newlib MMU-ohne CPUs?". Cygwin.com. 23. März 2006. archiviert von das Original am 22. November 2008. Abgerufen 28. Oktober 2011.
- ^ "Musl libc". Etalabs.net. Abgerufen 28. Oktober 2011.
- ^ Andere integrierte Funktionen von GCC, GCC -Handbuch
- ^ "Zusammenstellung mit CC". Abgerufen 2013-03-02.
- ^ Weimer, Florian. "C - für welche Funktionen ist das Libm bestimmt?". Paketüberfluss. Abgerufen 24. Februar 2021.
- ^ "C99 - Standard -C -Programme kompilieren". Die Open Group Basis Specialations Ausgabe 7, 2018 Ausgabe. Die offene Gruppe. Abgerufen 24. Februar 2021.
- ^ "Musl -FAQ". www.musl-libc.org. Abgerufen 24. Februar 2021.
- ^ "ISO/IEC TR 24731-1: Erweiterungen zur C-Bibliothek, Teil I: Grenzen-Überprüfungs-Schnittstellen" (PDF). Open-STD.org. 2007-03-28. Abgerufen 2014-03-13.
- ^ "ISO/IEC WDTR 24731-2: Erweiterungen zur C-Bibliothek, Teil II: Dynamische Zuordnungsfunktionen" (PDF). Open-STD.org. 2008-08-10. Abgerufen 2014-03-13.
- ^ Verwenden Sie die TR 24731 -Funktionen in Ihrem C -Code? - Paketüberfluss
- ^ "Austin Group Review von ISO/IEC WDTR 24731". Abgerufen 28. Oktober 2011.
- ^ "Math_error - Fehler aus mathematischen Funktionen erkennen". Man7.org. 2008-08-11. Abgerufen 2014-03-13.
- ^ "Baum". Man.Freebebsd.org. 2007-12-27. Abgerufen 2013-08-25.
- ^ "BSD Cross Referenz des Super -Benutzers: /openbsd/sys/sys/tree.h". bxr.su.
- ^ "Warteschlange". Man.Freebebsd.org. 2011-05-13. Abgerufen 2013-08-25.
- ^ "BSD Cross Referenz des Super -Benutzers: /openbsd/sys/sys/queue.h". bxr.su.
- ^ "fgetln". Man.Freebebsd.org. 1994-04-19. Abgerufen 2013-08-25.
- ^ "Super -Benutzer BSD Cross Referenz: /openbsd/lib/libc/stdio/fgetln.c". bxr.su.
- ^ "BSD Cross Referenz des Super -Benutzers: /openbsd/include/stdio.h". bxr.su.
- ^ "FTS". Man.Freebebsd.org. 2012-03-18. Abgerufen 2013-08-25.
- ^ "BSD Cross Referenz des Super -Benutzers: /openbsd/include/fts.h". bxr.su.
- ^ "DB". Man.Freebebsd.org. 2010-09-10. Abgerufen 2013-08-25.
- ^ "BSD Cross Referenz des Super -Benutzers: /openbsd/include/db.h". bxr.su.
- ^ Miller, Todd C. und Theo de Raadt. STRLCPY und STRLCAT - Konsistent, sicher, Stringkopie und Verkettung.Proceedings der Usenix Annual Technical Conference von 1999, 6. bis 11. Juni 1999, S. 175–178.
- ^ "Super -Benutzer BSD Cross Referenz: /openbsd/lib/libc/string/strlcat.c". bxr.su.
- ^ "Super -Benutzer -BSD Cross Referenz: /openbsd/lib/libc/string/strlcpy.c". bxr.su.
- ^ "Super -Benutzer -BSD Cross Referenz: /openbsd/lib/libc/string/strncat.c". bxr.su.
- ^ "BSD Cross Referenz des Superbenutzers: /openbsd/lib/libc/string/strncpy.c". bxr.su.
- ^ "irren". Man.Freebebsd.org. 2012-03-29. Abgerufen 2013-08-25.
- ^ "BSD Cross Referenz des Super -Benutzers: /openbsd/include/err.h". bxr.su.
- ^ "vis (3)". Man.Freebebsd.org. Abgerufen 14. September 2013.
- ^ "BSD Cross Referenz des Super -Benutzers: /openbsd/lib/libc/gen/vis.c". bxr.su.
- ^ "BSD Cross Referenz des Super -Benutzers: /openbsd/include/vis.h". bxr.su.
- ^ "Die Python -Standardbibliothek: 6.9. Dateiobjekte". Docs.python.org. Abgerufen 28. Oktober 2011.
- ^ "libc". Rostkisten. Archiviert von das Original am 18. August 2016. Abgerufen 31. Juli 2016.
Weitere Lektüre
- Plauger, P.J. (1992). Die Standard -C -Bibliothek (1 ed.).Prentice Hall. ISBN 978-0131315099.
Externe Links
- Der C -Bibliotheksreferenzhandbuch
- Praktische Liste davon, welche Header in welchem Standard sind
- Microsoft Universelle C -Laufzeitroutinen nach Kategorie auf msdn
- Netbsd C Bibliothekshandbuch Archiviert 2015-12-23 bei der Wayback -Maschine und Vollständige C -Bibliotheksquelle
- Handbuchseiten für die ursprünglichen C -Standardbibliotheken in UNIX