strerror(3) Library Functions Manual strerror(3) BEZEICHNUNG strerror, strerrorname_np, strerrordesc_np, strerror_r, strerror_l - gibt eine Zeichenkette zuruck, die den Fehlercode beschreibt BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include char *strerror(int fehlernum); const char *strerrorname_np(int fehlernum); const char *strerrordesc_np(int fehlernum); int strerror_r(int fehlernum, char puf[.puflange], size_t buflen); /* XSI-konform */ char *strerror_r(int fehlernum, char puf[.puflange], size_t puflange); /* GNU-spezifisch */ char *strerror_l(int fehlernum, locale_t locale); Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)): strerrorname_np(), strerrordesc_np(): _GNU_SOURCE strerror_r(): Die XSI-konforme Version wird bereitgestellt, falls: (_POSIX_C_SOURCE >= 200112L) && ! _GNU_SOURCE Anderenfalls wird die GNU-spezifische Version bereitgestellt. BESCHREIBUNG Die Funktion strerror() gibt einen Zeiger auf eine Zeichenkette mit der Beschreibung des Fehlercodes fur das ubergebene Argument fehlernum zuruck. Moglicherweise wertet sie dabei den LC_MESSAGES-Teil der aktuellen Locale aus, um die passende Sprache zu wahlen. (Falls beispielsweise fehlernum EINVAL ist, dann wird die zuruckgelieferte Beschreibung >>Invalid argument<< sein.). Diese Zeichenkette darf nicht von der Anwendung verandert werden und der zuruckgelieferte Zeiger wird bei nachfolgenden Aufrufen von strerror() oder strerror_l() fur ungultig erklart oder falls der Thread, der die Zeichenkette erlangte, sich beendet. Diese Zeichenkette wird von keiner anderen Bibliotheksfunktion, inklusive perror(3), verandert. Wie strerror() gibt die Funktion strerrordesc_np() einen Zeiger auf eine Zeichenkette zuruck, die den Fehlercode des im Argument fehlernum ubergebenen Fehlers enthalt, jedoch mit dem Unterschied, dass die zuruckgegebene Zeichenkette nicht anhand der aktuellen Locale ubersetzt ist. Die Funktion strerrorname_np() gibt einen Zeiger auf eine Zeichenkette zuruck, die den Namen des im Argument fehlernum ubergebenen Fehlers enthalt. Ist beispielsweise EPERM als Argument angegeben, gibt diese Funktion einen Zeiger auf die Zeichenkette >>EPERM<< zuruck. Wird 0 als ein Argument ubergeben, dann liefert diese Funktion einen Zeiger auf die Zeichenkette >>0<< zuruck. strerror_r() strerror_r() ist ahnlich zu strerror(), konnte aber den bereitgestellten Puffer puf verwenden, anstatt einen intern zu reservieren. Diese Funktion ist in zwei Versionen verfugbar: eine in POSIX.1-2001 beschriebene XSI-konforme Version (verfugbar seit Glibc 2.3.4, aber vor Glibc 2.13 nicht POSIX-konform) und eine GNU-spezifische Version (verfugbar seit Glibc 2.0). Die XSI-konforme Version wird durch die in der UBERSICHT angegebenen Feature-Test-Makroeinstellungen bereitgestellt; anderenfalls wird die GNU-Version verwendet. Ohne explizit vereinbarte Feature-Test-Makros wird (seit Glibc 2.4) standardmassig _POSIX_C_SOURCE mit dem Wert 200112L belegt, sodass standardmassig die XSI-Variante von strerror_r() verwendet wird. Die XSI-konforme strerror_r() ist fur portable Anwendungen vorzuziehen. Sie gibt die Fehlerzeichenkette im vom Nutzer bereitgestellten Puffer puf der Lange puflange zuruck. Die GNU-spezifische strerror_r() gibt einen Zeiger auf eine Zeichenkette zuruck, die die Fehlernachricht enthalt. Dies kann entweder ein Zeiger auf eine Zeichenkette sein, die die Funktion in puf speichert, oder ein Zeiger auf irgendeine (unveranderbare statische) Zeichenkette(wobei dann puf nicht genutzt wird). Wenn die Funktion in puf eine Zeichenkette speichert, werden hochstens puflange Bytes gespeichert (die Zeichenkette kann gekurzt werden, wenn puflange zu klein und fehlernum unbekannt ist). Die Zeichenkette enthalt immer ein abschliessendes Nullbyte (>>\0<<). strerror_l() strerror_l() verhalt sich wie strerror(), aber weist fehlernum einer locale-abhangigen Fehlermeldung in der durch locale angegebenen Locale zu. Das Verhalten von strerror_l() ist nicht definiert, wenn locale das spezielle Locale-Objekt LC_GLOBAL_LOCALE ist oder kein gultiges Handle fur ein Locale-Objekt. RUCKGABEWERT Die Funktionen strerror(), strerror_l() und die GNU-spezifische strerror_r() geben die entsprechende Zeichenkette mit der Fehlerbeschreibung zuruck oder eine Nachricht >>Unbekannter Fehler nnn<<, wenn die Fehlernummer unbekannt ist. Bei Erfolg geben strerrorname_np() und strerrordesc_np() die entsprechende den Fehler beschreibende Zeichenkette zuruck. Falls fehlernum eine unzulassige Fehlernummer ist, geben diese Funktionen NULL zuruck. Die XSI-konforme Funktion strerror_r() gibt bei Erfolg 0 zuruck. Im Fehlerfall wird eine positive Fehlernummer (seit Glibc 2.13) oder -1 zuruckgegeben und errno mit einem Wert belegt, der den Fehler angibt (Glibc vor Version 2.13). POSIX.1-2001 und POSIX.1-2008 verlangen, dass ein erfolgreicher Aufruf von strerror() oder strerror_l() errno unverandert belasst. Sie merken an, dass wegen des nicht definierten Ruckgabewerts zur Anzeige eines Fehlers eine Anwendung zur Fehlerprufung vor dem Aufruf errno auf Null setzen und nach dem Aufruf uberprufen sollte. FEHLER EINVAL Der Wert von fehlernum ist keine gultige Fehlernummer. ERANGE Es wurde unzureichender Speicher fur die Aufnahme der Fehler-Zeichenkette bereitgestellt. ATTRIBUTE Siehe attributes(7) fur eine Erlauterung der in diesem Abschnitt verwandten Ausdrucke. +-------------------+-------------------------+------------------------+ |Schnittstelle | Attribut | Wert | +-------------------+-------------------------+------------------------+ |strerror() | Multithread-Fahigkeit | MT-Sicher | +-------------------+-------------------------+------------------------+ |strerrorname_np(), | Multithread-Fahigkeit | MT-Sicher | |strerrordesc_np() | | | +-------------------+-------------------------+------------------------+ |strerror_r(), | Multithread-Fahigkeit | MT-Sicher | |strerror_l() | | | +-------------------+-------------------------+------------------------+ Vor Glibc 2.32 war strerror() nicht MT-Sicher. STANDARDS strerror() C11, POSIX.1-2008. strerror_r() strerror_l() POSIX.1-2008. strerrorname_np() strerrordesc_np() GNU. POSIX.1-2001 gestattet strerror() das Setzen von errno wenn der Aufruf einen Fehler bewirkt, gibt aber nicht vor, welchen Wert die Funktion im Fehlerfall zuruckgeben sollte. Auf einigen Systemen gibt strerror() NULL zuruck, wenn die Fehlernummer nicht bekannt ist. Auf anderen Systemen gibt strerror() eine Meldung etwa wie >>Fehler nnn aufgetreten<< und setzt errno auf EINVAL, wenn die Fehlernummer unbekannt ist. C99 und POSIX.1-2008 verlangen, dass der Ruckgabewert von NULL verschieden ist. GESCHICHTE strerror() POSIX.1-2001, C89. strerror_r() POSIX.1-2001. strerror_l() Glibc 2.6. POSIX.1-2008. strerrorname_np() strerrordesc_np() glibc 2.32. ANMERKUNGEN strerrorname_np() und strerrordesc_np() sind weder multithread-fahig noch asynchronsignalsicher. SIEHE AUCH err(3), errno(3), error(3), perror(3), strsignal(3), locale(7), signal-safety(7) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer , Mario Blattermann und Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 strerror(3)