manpages-de 1.4-1 - en to de translation catalogue (48 entries)

note: type: TH
en: 2017-03-13
de: 13. März 2017

note: type: TH
en: Linux Programmer's Manual
de: Linux-Programmierhandbuch

note: type: SH
en: NAME
de: BEZEICHNUNG

note: type: Plain text
en: setjmp, sigsetjmp, longjmp, siglongjmp - performing a nonlocal goto
de: setjmp, sigsetjmp, longjmp, siglongjmp - Nichtlokalen Sprungbefehl durchführen

note: type: SH
en: SYNOPSIS
de: ÜBERSICHT

note: type: Plain text
en: Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):
de: Mit Glibc erforderliche Makros (siehe B<feature_test_macros>(7)):

note: type: Plain text
en: B<setjmp>(): see NOTES.
de: B<setjmp>(): siehe ANMERKUNGEN.

note: type: SH
en: DESCRIPTION
de: BESCHREIBUNG

note: type: Plain text
en: The functions described on this page are used for performing "nonlocal gotos": transferring execution from one function to a predetermined location in another function.  The B<setjmp>()  function dynamically establishes the target to which control will later be transferred, and B<longjmp>()  performs the transfer of execution.
de: Die auf dieser Seite beschriebenen Funktionen werden für »nichtlokale Gotos« verwandt: Übergabe der Ausführung von einer Funktion zu einer vorbestimmten Stelle in einer anderen Funktion. Die Funktion B<setjmp>() etabliert dynamisch das Ziel, zu dem die Steuerung später übergeben wird und B<longjmp>() führt den Ausführungstransfer aus.

note: type: Plain text
en: The B<setjmp>()  function saves various information about the calling environment (typically, the stack pointer, the instruction pointer, possibly the values of other registers and the signal mask)  in the buffer I<env> for later use by B<longjmp>().  In this case, B<setjmp>()  returns 0.
de: Die Funktion B<setjmp>() speichert verschiedene Informationen über die aufrufende Umgebung (typischerweise den Stack-Zeiger, den Anweisungszeiger, möglicherweise die Werte von anderen Registern und die Signalmaske) im Puffer I<env> für die spätere Verwendung durch B<longjmp>(). In diesem Fall liefert B<setjmp>() 0 zurück.

note: type: Plain text
en: The B<longjmp>()  function uses the information saved in I<env> to transfer control back to the point where B<setjmp>()  was called and to restore ("rewind") the stack to its state at the time of the B<setjmp>()  call.  In addition, and depending on the implementation (see NOTES), the values of some other registers and the process signal mask may be restored to their state at the time of the B<setjmp>()  call.
de: Die Funktion B<longjmp>() verwendet die in I<env> gespeicherten Informationen, um die Steuerung zu dem Punkt zurückzuübergeben, an dem B<setjmp>() aufgerufen worden war und den Stack auf seinem Zustand zum Zeitpunkt des Aufrufs von B<setjmp>() wiederherzustellen (»zurückzuspulen«). Zusätzlich und abhängig von der Implementierung (siehe ANMERKUNGEN) können die Werte einiger anderer Register und der Prozesssignalmaske auf den Wert zum Zeitpunkt des Aufrufs von B<setjmp>() wiederhergestellt werden.

note: type: Plain text
en: Following a successful B<longjmp>(), execution continues as if B<setjmp>()  had returned for a second time.  This "fake" return can be distinguished from a true B<setjmp>()  call because the "fake" return returns the value provided in I<val>.  If the programmer mistakenly passes the value 0 in I<val>, the "fake" return will instead return 1.
de: Nach einem erfolgreichen B<longjmp>() fährt die Ausführung so fort, als ob B<setjmp>() ein zweites Mal zurückgekehrt wäre. Diese »Schummel«-Rückkehr kann von einem echten Aufruf von B<setjmp>() unterschieden werden, da die »Schummel«-Rückkehr den in I<val> bereitgestellten Wert zurückliefert. Falls der Programmierer fehlerhafterweise den Wert 0 in I<val> weitergibt, wird die »Schummel«-Rückkehr stattdessen 1 zurückliefern.

note: type: SS
en: sigsetjmp() and siglongjmp()
de: sigsetjmp() und siglongjmp()

note: type: Plain text
en: B<sigsetjmp>()  and B<siglongjmp>()  also perform nonlocal gotos, but provide predictable handling of the process signal mask.
de: B<sigsetjmp>() und B<siglongjmp>() führen auch nichtlokale Gotos durch, stellen aber eine vorhersehbare Behandlung der Prozesssignalmaske bereit.

note: type: Plain text
en: If, and only if, the I<savesigs> argument provided to B<sigsetjmp>()  is nonzero, the process's current signal mask is saved in I<env> and will be restored if a B<siglongjmp>()  is later performed with this I<env>.
de: Nur wenn das an B<sigsetjmp>() übergebene Argument I<savesigs> nicht Null ist, wird die aktuelle Signalmaske des Prozesses in I<env> gespeichert und wiederhergestellt, wenn später mit diesem I<env> ein B<siglongjmp> durchgeführt wird.

note: type: SH
en: RETURN VALUE
de: RÜCKGABEWERT

note: type: Plain text
en: B<setjmp>()  and B<sigsetjmp>()  return 0 when called directly; on the "fake" return that occurs after B<longjmp>()  or B<siglongjmp>(), the nonzero value specified in I<val> is returned.
de: B<setjmp>() und B<sigsetjmp>() geben 0 zurück, wenn sie direkt aufgerufen wurden; bei dem »nachgeahmten« Zurückkehren, das nach B<longjmp>() und B<siglongjmp>() auftritt, wird der in I<val> angegebene Nichtnull-Wert zurückgegeben.

note: type: Plain text
en: The B<longjmp>()  or B<siglongjmp>()  functions do not return.
de: Die Funktionen B<longjmp>() oder B<siglongjmp>() kehren nicht zurück.

note: type: SH
en: ATTRIBUTES
de: ATTRIBUTE

note: type: Plain text
en: For an explanation of the terms used in this section, see B<attributes>(7).
de: Siehe B<attributes>(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

note: type: tbl table
en: Interface
de: Schnittstelle

note: type: tbl table
en: Attribute
de: Attribut

note: type: tbl table
en: Value
de: Wert

note: type: tbl table
en: Thread safety
de: Multithread-Fähigkeit

note: type: SH
en: CONFORMING TO
de: KONFORM ZU

note: type: SH
en: NOTES
de: ANMERKUNGEN

note: so that _FAVOR_BSD is triggered .BR _XOPEN_SOURCE_EXTENDED , type: Plain text
en: POSIX does not specify whether B<setjmp>()  will save the signal mask (to be later restored during B<longjmp>()).  In System V it will not.  In 4.3BSD it will, and there is a function B<_setjmp>()  that will not.  The behavior under Linux depends on the glibc version and the setting of feature test macros.  On Linux with glibc versions before 2.19, B<setjmp>()  follows the System V behavior by default, but the BSD behavior is provided if the B<_BSD_SOURCE> feature test macro is explicitly defined and none of B<_POSIX_SOURCE>, B<_POSIX_C_SOURCE>, B<_XOPEN_SOURCE>, B<_GNU_SOURCE>, or B<_SVID_SOURCE> is defined.  Since glibc 2.19, I<E<lt>setjmp.hE<gt>> exposes only the System V version of B<setjmp>().  Programs that need the BSD semantics should replace calls to B<setjmp>()  with calls to B<sigsetjmp>()  with a nonzero I<savesigs> argument.
de: POSIX spezifiziert nicht, ob B<setjmp>() die Signalmaske sichern wird (um sie später während B<longjmp>() wieder herzustellen). In System-V wird es dies nicht tun. In 4.3BSD wird es dies tun und dort gibt es eine Funktion B<_setjmp>(), die es nicht tut. Das Verhalten unter Linux hängt von der Glibc-Version und den Einstellungen der Feature-Test-Makros ab. Unter Linux mit Glibc-Versionen vor 2.19 folgte B<setjmp>() standardmäßig dem Verhalten von System V, aber das BSD-Verhalten wird bereitgestellt, wenn das B<_BSD_SOURCE>-Feature-Test-Macro explizit definiert ist und weder B<_POSIX_SOURCE>, B<_POSIX_C_SOURCE>, B<_XOPEN_SOURCE>, B<_GNU_SOURCE> noch B<_SVID_SOURCE> definiert ist. Seit Glibc 2.19 stellt I<E<lt>setjmp.hE<gt>> nur die System-V-Version von B<setjmp>() bereit. Programme, die die BSD-Semantik benötigen, sollten Aufrufe von B<setjmp>() durch Aufrufe von B<sigsetjmp>(), bei denen das Argument I<savesigs> ungleich numerisch Null ist, ersetzen.

note: type: Plain text
en: B<setjmp>()  and B<longjmp>()  can be useful for dealing with errors inside deeply nested function calls or to allow a signal handler to pass control to a specific point in the program, rather than returning to the point where the handler interrupted the main program.  In the latter case, if you want to portably save and restore signal masks, use B<sigsetjmp>()  and B<siglongjmp>().  See also the discussion of program readability below.
de: B<setjmp>() und B<longjmp>() können zum Umgang mit Fehlern innerhalb tiefverschachtelter Funktionsaufrufe nützlich sein oder um einem Signal-Handler zu ermöglichen, die Steuerung an einen bestimmten Punkt in dem Programm zu übergeben, statt zu dem Punkt zurückzukehren, in dem der Handler das Hauptprogramm unterbrochen hat. In letzterem Falle verwenden Sie B<sigsetjmp>() und B<siglongjmp>(), falls Sie die Signalmaske portabel speichern und wiederherstellen möchten. Lesen Sie auch die Diskussion zur Programmlesbarkeit weiter unten.

note: type: Plain text
en: The compiler may optimize variables into registers, and B<longjmp>()  may restore the values of other registers in addition to the stack pointer and program counter.  Consequently, the values of automatic variables are unspecified after a call to B<longjmp>()  if they meet all the following criteria:
de: Der Compiler kann Variablen in Register optimieren und B<longjmp>() kann die Werte anderer Register zusätzlich zum Stack- und Programmzeiger wiederherstellen. Daher ist der Wert von automatischen Variablen nach einem Aufruf von B<longjmp>() undefiniert, falls alle folgenden Kriterien zutreffen:

note: type: Plain text
en: they are local to the function that made the corresponding B<setjmp>()  call;
de: sie sind für die Funktion, die den entsprechenden Aufruf B<setjmp>() durchführte, lokal,

note: type: Plain text
en: their values are changed between the calls to B<setjmp>()  and B<longjmp>(); and
de: ihre Werte sind zwischen Aufrufen von B<setjmp>() und B<longjmp>() geändert, und

note: type: Plain text
en: they are not declared as I<volatile>.
de: sie sind nicht als I<volatile> deklariert.

note: type: Plain text
en: Analogous remarks apply for B<siglongjmp>().
de: Entsprechende Anmerkungen gelten für B<siglongjmp>().

note: type: SS
en: Nonlocal gotos and program readability
de: Nicht lokale GOTOs und Programmlesbarkeit

note: type: Plain text
en: While it can be abused, the traditional C "goto" statement at least has the benefit that lexical cues (the goto statement and the target label)  allow the programmer to easily perceive the flow of control.  Nonlocal gotos provide no such cues: multiple B<setjmp>()  calls might employ the same I<jmp_buf> variable so that the content of the variable may change over the lifetime of the application.  Consequently, the programmer may be forced to perform detailed reading of the code to determine the dynamic target of a particular B<longjmp>()  call.  (To make the programmer's life easier, each B<setjmp>()  call should employ a unique I<jmp_buf> variable.)
de: Auch wenn er missbraucht werden kann, hat der traditionelle »goto«-Ausdruck von C zumindest den Vorteil, dass lexikalische Hinweise (der Goto-Ausdruck und die Zielmarkierung) dem Programmierer erlauben, leicht den Ablauf zu verstehen. Nichtlokale Gotos stellen keine solchen Hinweise bereit: Mehrere Aufrufe von B<setjmp>() können die gleiche Variable I<jmp_buf> einsetzen, so dass der Inhalt der Variablen sich über die Lebensdauer des Programmes verändern kann. Konsequenterweise kann der Programmierer dazu gezwungen sein, den Code detailliert zu lesen, um das dynamische Ziel eines bestimmten Aufrufs von B<longjmp>() zu ermitteln. (Um das Leben der Programmierer zu erleichtern, sollte jeder Aufruf von B<setjmp>() eine eineindeutige Variable I<jmp_buf> einsetzen.)

note: type: Plain text
en: Adding further difficulty, the B<setjmp>()  and B<longjmp>()  calls may not even be in the same source code module.
de: Weitere Schwierigkeiten kommen hinzu, da die Aufrufe von B<setjmp>() und B<longjmp>() nicht zwingend im gleichen Quellcodemodul sein müssen.

note: type: Plain text
en: In summary, nonlocal gotos can make programs harder to understand and maintain, and an alternative should be used if possible.
de: Zusammenfassend erschweren nicht lokale GOTOs das Verständnis und die Verwaltung von Programmen. Falls möglich, sollte eine Alternative benutzt werden.

note: type: SS
en: Caveats
de: Warnungen

note: type: Plain text
en: If the function which called B<setjmp>()  returns before B<longjmp>()  is called, the behavior is undefined.  Some kind of subtle or unsubtle chaos is sure to result.
de: Falls die Funktion, die B<setjmp>() aufruft, zurückkehrt, bevor B<longjmp>() aufgerufen wird, ist das Verhalten undefiniert. Irgendwelches subtiles oder nicht so subtiles Chaos entsteht bestimmt dadurch.

note: The following statement appeared in versions up to POSIX.1-2008 TC1, but is set to be removed in POSIX.1-2008 TC2: According to POSIX.1, if a .BR longjmp () call is performed from a nested signal handler (i.e., from a handler that was invoked in response to a signal that was generated while another 
en: If, in a multithreaded program, a B<longjmp>()  call employs an I<env> buffer that was initialized by a call to B<setjmp>()  in a different thread, the behavior is undefined.
de: Falls ein B<longjmp>()-Aufruf in einem Programm mit mehreren Threads einen I<env>-Puffer einsetzt, der durch einen Aufruf von B<setjmp>() in einem anderen Thread initialisiert wurde, ist sein Verhalten nicht definiert.

note: http://austingroupbugs.net/view.php?id=516#c1195 type: Plain text
en: POSIX.1-2008 Technical Corrigendum 2 adds B<longjmp>()  and B<siglongjmp>()  to the list of async-signal-safe functions.  However, the standard recommends avoiding the use of these functions from signal handlers and goes on to point out that if these functions are called from a signal handler that interrupted a call to a non-async-signal-safe function (or some equivalent, such as the steps equivalent to B<exit>(3)  that occur upon a return from the initial call to I<main>()), the behavior is undefined if the program subsequently makes a call to a non-async-signal-safe function.  The only way of avoiding undefined behavior is to ensure one of the following:
de: POSIX.1-2008 Technische Berichtigung 2 fügt B<longjmp>() und B<siglongjmp>() zur Liste der asynchronsignalsicheren Funktionen hinzu. Der Standard empfiehlt jedoch den Gebrauch dieser Funktionen aus Signal-Handlern zu vermeiden. Sie fährt damit fort, zu betonen, dass, falls diese Funktionen von einem Signal-Handler aufgerufen werden, der einen Aufruf einer nicht asynchronsignalsicheren Funktion unterbrochen hatte (oder etwas gleichbedeutendem, wie den Schritten, die B<exit>(3) entsprechen, die über eine Rückkehr vom initialen Aufruf zu I<main>() auftreten), das Verhalten nicht definiert ist, falls das Programm nachfolgend einen Aufruf einer nicht asynchronsignalsicheren Funktion durchführt. Der einzige Weg, nicht definiertes Verhalten zu vermeiden, ist, eines des Nachfolgenden sicherzustellen:

note: type: Plain text
en: After long jumping from the signal handler, the program does not call any non-async-signal-safe functions and does not return from the initial call to I<main>().
de: Nach langen Sprüngen vom Signal-Handler ruft das Programm keine asynchronsignalsicheren Funktionen auf und kehrt nicht vom initialen Aufruf von I<main>() zurück.

note: type: Plain text
en: Any signal whose handler performs a long jump must be blocked during I<every> call to a non-async-signal-safe function and no non-async-signal-safe functions are called after returning from the initial call to I<main>().
de: Jedes Signal, dessen Handler einen langen Sprung durchführt, muss während I<jedes> Aufrufs einer nicht asynchronsignalsicheren Funktion blockiert werden und keine nicht asynchronsignalsicheren Funktionen werden nach der Rückkehr vom initialen Aufruf von I<main>() aufgerufen.

note: type: SH
en: SEE ALSO
de: SIEHE AUCH

note: type: SH
en: COLOPHON
de: KOLOPHON

note: type: Plain text
en: This page is part of release 5.03 of the Linux I<man-pages> project.  A description of the project, information about reporting bugs, and the latest version of this page, can be found at \%https://www.kernel.org/doc/man-pages/.
de: Diese Seite ist Teil der Veröffentlichung 5.03 des Projekts Linux-I<man-pages>. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man-pages/.

note: type: Plain text
en: This page is part of release 5.02 of the Linux I<man-pages> project.  A description of the project, information about reporting bugs, and the latest version of this page, can be found at \%https://www.kernel.org/doc/man-pages/.
de: Diese Seite ist Teil der Veröffentlichung 5.02 des Projekts Linux-I<man-pages>. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man-pages/.

note: type: Plain text
en: This page is part of release 5.01 of the Linux I<man-pages> project.  A description of the project, information about reporting bugs, and the latest version of this page, can be found at \%https://www.kernel.org/doc/man-pages/.
de: Diese Seite ist Teil der Veröffentlichung 5.01 des Projekts Linux-I<man-pages>. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man-pages/.
