[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [RFR] man://manpages-de/man3/setjmp.3.po



Hallo Helge,

> #. type: Plain text
> msgid "setjmp, sigsetjmp, longjmp, siglongjmp - performing a nonlocal goto"
> msgstr ""
> "setjmp, sigsetjmp, longjmp, siglongjmp - Nichtlokale Verzweigung
> durchführen"

s/Nichtlokale Verzweigung/nichtlokaler Sprungbefehl/
(auch nachfolgend)


> #. type: Plain text
> msgid ""
> "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."
> msgstr ""
> "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."

s/war und den Stack/war, um den Stack/


> #. type: Plain text
> msgid ""
> "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."
> msgstr ""
> "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."

s/\"nachgeahmten\"/»nachgeahmten«/


> #. type: Plain text
> msgid ""
> "B<setjmp>()  and B<longjmp>(3)  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." msgstr ""
> "B<setjmp>() und B<longjmp>(3) 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 übrgeben, statt zu dem Punkt zurückzukehren, andem der Handler
> "
> "das Hauptprogramm unterbrochen hat. In letzterem Falle verwenden Sie "
> "B<sigsetjmp>() und B<siglongjmp>(), falls die portable die Signalmaske "
> "speichern und wiederherstellen möchten. Lesen Sie auch die Diskussion zur "
> "Programmlesbarkeit weiter unten."

s/tiefverschachtelter/tief verschachtelter/
s/sein, oder/sein oder/
s/übrgeben/übergeben/
s/andem/indem/
s/die portable die Signalmaske/Sie die Signalmaske portabel/


> #, fuzzy
> #. type: Plain text
> msgid ""
> "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:"
> msgstr ""
> "Der Compiler kann Variablen in Register optimieren und B<longjmp>() kann "
> "zusätzlich zum FIXME-Zeiger und dem Programmzähler die Werte anderer
> Register " "wiederherstellen. Daher ist der Wert von automatischen
> Variablen nach einem " "Aufruf von B<longjmp>() undefiniert, falls alle
> folgenden Kriterien zutreffen:"

kann die Werte anderer Register zusätzlich zum Stack-und Programmzeiger  
wiederherstellen


> #. type: Plain text
> msgid ""
> "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.)"
> msgstr ""
> "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 Programmier 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 Programmerer dazu gezwungen sein, " "den Code detailliert zu
> lesen, um das dynammische 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.)"

s/dem Programmier erlauben/dem Programmierer erlauben/
s/bereit: mehrere/bereit: Mehrere/
s/des Programmes/des Programms/
s/der Programmerer dazu/der Programmierer dazu/
s/das dynammische/das dynamische/


> #. type: Plain text
> msgid ""
> "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."
> msgstr ""
> "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 entstehdt bestimmt
> dadurch."

s/entstehdt/entsteht/


> #. type: Plain text
> msgid ""
> "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."
> msgstr ""

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.


> #.  http://austingroupbugs.net/view.php?id=516#c1195
> #. type: Plain text
> msgid ""
> "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:" msgstr ""

POSIX.1-2008 Technical Corrigendum 2 fügt B<longjmp>() und B<siglongjmp>() zur 
Liste der asynchronsignalsicheren Funktionen hinzu. Der Standard empfiehlt 
jedoch den Gebrauch dieser Funktionen von Signal-Handlern 
(Signalbehandlungsroutinen?) zu vermeiden. Es fährt damit fort, zu betonen, 
dass, falls diese Funktionen von einem Signal-Handler aufgerufen werden, dies 
einen Aufruf zu einer nicht asynchronsignalsicheren Funktion (oder etwas 
gleichbedeutendem, wie den Schritten die B<exit>(3) entsprechen, die über eine 
Rückkehr vom initialen Aufruf zu I<main>() auftreten) gleichkommt. Das 
Verhalten ist nicht definiert, falls das Programm nachfolgend einen Aufruf zu 
einer nicht asynchronsignalsicheren Funktion tätigt. Der einzige Weg, nicht 
definiertes Verhalten zu vermeiden, ist, eines des Nachfolgenden 
sicherzustellen.


> #. type: Plain text
> msgid ""
> "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>()."
> msgstr ""

Nach langen Sprüngen vom Signal-Handler, ruft das Programm nciht irgendwelche 
nicht asynchronsignalsicheren Funktionen auf und kehrt nicht von initalen 
Aufruf von I<main>() zurück


> #. type: Plain text
> msgid ""
> "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>()." msgstr ""

Jedes Signal, das einen langen Sprung durchführt, muss während I<jedem> Aufruf 
einer nicht asynchronsignalsicheren Funktion blockiert werden und keine nicht 
asynchronsignalsichere Funktion wird nach der Rückkehr vom initalen Aufruf von 
I<main>() aufgerufen.


Gruß,
Chris


Reply to: