Hallo Mitübersetzer, und angehängt Teil 3 mit der Bitte um konstruktive Kritik.
Vielen Dank & Grüße Helge -- Dr. Helge Kreutzmann deb...@helgefjell.de Dipl.-Phys. http://www.helgefjell.de/debian.php 64bit GNU powered gpg signed mail preferred Help keep free software "libre": http://www.ffii.de/
#. type: TP #, no-wrap msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)" msgstr "B<PTRACE_INTERRUPT> (seit Linux 3.4)" #. type: Plain text msgid "" "Stop a tracee. If the tracee is running or sleeping in kernel space and " "B<PTRACE_SYSCALL> is in effect, the system call is interrupted and syscall-" "exit-stop is reported. (The interrupted system call is restarted when the " "tracee is restarted.) If the tracee was already stopped by a signal and " "B<PTRACE_LISTEN> was sent to it, the tracee stops with B<PTRACE_EVENT_STOP> " "and I<WSTOPSIG(status)> returns the stop signal. If any other ptrace-stop " "is generated at the same time (for example, if a signal is sent to the " "tracee), this ptrace-stop happens. If none of the above applies (for " "example, if the tracee is running in user space), it stops with " "B<PTRACE_EVENT_STOP> with I<WSTOPSIG(status)> == B<SIGTRAP>. " "B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>." msgstr "" "stoppt einen verfolgten Prozess. Falls der verfolgte Prozess im Kernel-Space " "läuft oder schläft und B<PTRACE_SYSCALL> in Kraft ist, wird der Systemaufruf " "unterbrochen und Systemaufrufbeendigungsstopp gemeldet. (Der unterbrochene " "Systemaufruf wird beim Neustart des verfolgten Prozesses ebenfalls neu " "gestartet.) Falls der verfolgte Prozess bereits durch ein Signal gestoppt " "und B<PTRACE_LISTEN> an ihn gesendet wurde, stoppt der verfolgte Prozess mit " "B<PTRACE_EVENT_STOP> und I<WSTOPSIG(Status)> gibt das Stoppsignal zurück. " "Falls zur selben Zeit irgendein anderes »ptrace-stop« erzeugt wird (zum " "Beispiel, weil ein Signal an den verfolgten Prozess gesendet wird), tritt " "dieses »ptrace-stop« auf. Falls nichts von obigem zutrifft (zum Beispiel, " "weil der verfolgte Prozess im Userspace läuft), stoppt er mit " "B<PTRACE_EVENT_STOP> mit I<WSTOPSIG(status)> == B<SIGTRAP>. " "B<PTRACE_INTERRUPT> funktioniert nur bei verfolgten Prozessen, die durch " "B<PTRACE_SEIZE> angehängt wurden." #. type: TP #, no-wrap msgid "B<PTRACE_ATTACH>" msgstr "B<PTRACE_ATTACH>" #. No longer true (removed by Denys Vlasenko, 2011, who remarks: #. "I think it isn't true in non-ancient 2.4 and in 2.6/3.x. #. Basically, it's not true for any Linux in practical use. #. ; the behavior of the tracee is as if it had done a #. .BR PTRACE_TRACEME . #. The calling process actually becomes the parent of the tracee #. process for most purposes (e.g., it will receive #. notification of tracee events and appears in #. .BR ps (1) #. output as the tracee's parent), but a #. .BR getppid (2) #. by the tracee will still return the PID of the original parent. #. type: Plain text msgid "" "Attach to the process specified in I<pid>, making it a tracee of the calling " "process. The tracee is sent a B<SIGSTOP>, but will not necessarily have " "stopped by the completion of this call; use B<waitpid>(2) to wait for the " "tracee to stop. See the \"Attaching and detaching\" subsection for " "additional information. (I<addr> and I<data> are ignored.)" msgstr "" "hängt an den Prozess, der durch I<PID> angegeben wird, an, lässt ihn zum " "verfolgten Prozess des aufrufenden Prozesses werden. Dem verfolgten Prozess " "wird ein B<SIGSTOP> gesandt, er wird aber nicht notwendigerweise durch die " "Vollendung dieses Aufrufs gestoppt; benutzen Sie B<waitpid>(2), um auf das " "Stoppen des verfolgten Prozesses zu warten. Lesen Sie den Unterabschnitt " "»Anhängen und Loslösen«, um zusätzliche Informationen zu erhalten. " "(I<Adresse> und I<Daten> werden ignoriert.)" #. type: Plain text msgid "" "Permission to perform a B<PTRACE_ATTACH> is governed by a ptrace access mode " "B<PTRACE_MODE_ATTACH_REALCREDS> check; see below." msgstr "" "Berechtigungen, ein B<PTRACE_ATTACH> durchzuführen, werden durch eine Ptrace-" "Zugriffsmodus-B<PTRACE_MODE_ATTACH_REALCREDS>-Überprüfung geregelt; siehe " "unten." #. type: TP #, no-wrap msgid "B<PTRACE_SEIZE> (since Linux 3.4)" msgstr "B<PTRACE_SEIZE> (seit Linux 3.4)" #. Noted by Dmitry Levin: #. PTRACE_SEIZE was introduced by commit v3.1-rc1~308^2~28, but #. it had to be used along with a temporary flag PTRACE_SEIZE_DEVEL, #. which was removed later by commit v3.4-rc1~109^2~20. #. That is, [before] v3.4 we had a test mode of PTRACE_SEIZE API, #. which was not compatible with the current PTRACE_SEIZE API introduced #. in Linux 3.4. #. type: Plain text msgid "" "Attach to the process specified in I<pid>, making it a tracee of the calling " "process. Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the " "process. Group-stops are reported as B<PTRACE_EVENT_STOP> and " "I<WSTOPSIG(status)> returns the stop signal. Automatically attached " "children stop with B<PTRACE_EVENT_STOP> and I<WSTOPSIG(status)> returns " "B<SIGTRAP> instead of having B<SIGSTOP> signal delivered to them. " "B<execve>(2) does not deliver an extra B<SIGTRAP>. Only a B<PTRACE_SEIZE>d " "process can accept B<PTRACE_INTERRUPT> and B<PTRACE_LISTEN> commands. The " "\"seized\" behavior just described is inherited by children that are " "automatically attached using B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, " "and B<PTRACE_O_TRACECLONE>. I<addr> must be zero. I<data> contains a bit " "mask of ptrace options to activate immediately." msgstr "" "An den zu dem in I<pid> angegebenen Prozess anhängen, wodurch er ein " "verfolgter Prozess des aufrufenden Prozesses wird. Anders als " "B<PTRACE_ATTACH> beendet B<PTRACE_SEIZE> den Prozess nicht. Gruppenstopps " "werden als B<PTRACE_EVENT_STOP> berichtet und I<WSTOPSIG(status)> liefert " "das Stopp-Signal zurück. Automatisch angehängte Kinder stopppen mit " "B<PTRACE_EVENT_STOP> und I<WSTOPSIG(status)> liefert B<SIGTRAP> zurück, " "statt ein B<SIGSTOP> Signal geliefert zu bekommen. B<execve>(2) liefert kein " "zusätzliches B<SIGTRAP> aus. Nur ein Prozess, der B<PTRACE_SEIZE> ist, kann " "die Befehle B<PTRACE_INTERRUPT> und B<PTRACE_LISTEN> akzeptieren. Das gerade " "beschriebene »beschlagnahmte« (engl. »seized«) Verhalten wird von Kindern " "geerbt, die automatisch mittels B<PTRACE_O_TRACEFORK>, " "B<PTRACE_O_TRACEVFORK> und B<PTRACE_O_TRACECLONE> angehängt sind. I<addr> " "muss Null sein. I<data> enthält eine Bitmaske, die die sofort zu " "aktivierenden Optionen enthält." #. type: Plain text msgid "" "Permission to perform a B<PTRACE_SEIZE> is governed by a ptrace access mode " "B<PTRACE_MODE_ATTACH_REALCREDS> check; see below." msgstr "" "Berechtigungen, ein B<PTRACE_SEIZE> durchzuführen, werden durch eine Ptrace-" "Zugriffsmodus-B<PTRACE_MODE_ATTACH_REALCREDS>-Überprüfung geregelt; siehe " "unten." #. type: TP #, no-wrap msgid "B<PTRACE_SECCOMP_GET_FILTER> (since Linux 4.4)" msgstr "B<PTRACE_SECCOMP_GET_FILTER> (seit Linux 4.4)" #. commit f8e529ed941ba2bbcbf310b575d968159ce7e895 #. type: Plain text msgid "" "This operation allows the tracer to dump the tracee's classic BPF filters." msgstr "" "Diese Aktion erlaubt es dem verfolgenden Prozess, die klassischen BPF-Filter " "des verfolgten Prozesses auszugeben." #. type: Plain text msgid "" "I<addr> is an integer specifying the index of the filter to be dumped. The " "most recently installed filter has the index 0. If I<addr> is greater than " "the number of installed filters, the operation fails with the error " "B<ENOENT>." msgstr "" "I<addr> ist eine Ganzzahl, die den Index des Filters, der ausgegeben werden " "soll, festlegt. Der neuste installierte Filter hat den Index 0. Falls " "I<addr> größer als die Anzahl der installierten Filter ist, schlägt die " "Aktion mit dem Fehler B<ENOENT> fehl." #. type: Plain text msgid "" "I<data> is either a pointer to a I<struct sock_filter> array that is large " "enough to store the BPF program, or NULL if the program is not to be stored." msgstr "" "I<data> ist entweder ein Zeiger auf ein Feld I<struct sock_filter>, dass " "groß genug ist, ein BPF-Programm zu speichern, oder NULL, falls das Programm " "nicht gespeichert werden soll." #. type: Plain text msgid "" "Upon success, the return value is the number of instructions in the BPF " "program. If I<data> was NULL, then this return value can be used to " "correctly size the I<struct sock_filter> array passed in a subsequent call." msgstr "" "Im Erfolgsfall ist der Rückgabewert die Anzahl der Befehle in dem BPF-" "Programm. Falls I<data> NULL war, dann kann dieser Rückgabewert benutzt " "werden, um in einem folgenden Aufruf die korrekte Größe des Feldes I<struct " "sock_filter> zu übergeben." #. type: Plain text msgid "" "This operation fails with the error B<EACCESS> if the caller does not have " "the B<CAP_SYS_ADMIN> capability or if the caller is in strict or filter " "seccomp mode. If the filter referred to by I<addr> is not a classic BPF " "filter, the operation fails with the error B<EMEDIUMTYPE>." msgstr "" "Diese Aktion schlägt mit dem Fehler B<EACCESS> fehl, falls der Aufrufende " "nicht die Capability B<CAP_SYS_ADMIN> hat oder falls der Aufrufende in einem " "strikten oder Filter-Seccomp-Modus ist. Falls der durch I<addr> " "referenzierte Filter kein klassischer BPF-Filter ist, schlägt die Aktion mit " "dem Fehler B<EMEDIUMTYPE> fehl." #. type: Plain text msgid "" "This operation is available if the kernel was configured with both the " "B<CONFIG_SECCOMP_FILTER> and the B<CONFIG_CHECKPOINT_RESTORE> options." msgstr "" "Diese Aktion ist verfügbar, falls der Kernel mit den Optionen " "B<CONFIG_SECCOMP_FILTER> und B<CONFIG_CHECKPOINT_RESTORE> konfiguriert wurde." #. type: TP #, no-wrap msgid "B<PTRACE_DETACH>" msgstr "B<PTRACE_DETACH>" #. type: Plain text msgid "" "Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it. " "Under Linux, a tracee can be detached in this way regardless of which method " "was used to initiate tracing. (I<addr> is ignored.)" msgstr "" "startet den gestoppten, verfolgten Prozess wie für B<PTRACE_CONT>, löst ihn " "aber zuerst vom Prozess ab. Unter Linux kann ein verfolgter Prozess auf " "diese Art abgelöst werden, ohne Rücksicht darauf zu nehmen, welche Methode " "zum Starten der Verfolgung benutzt wurde.(I<Adresse> wird ignoriert.)" #. type: TP #, no-wrap msgid "B<PTRACE_GET_THREAD_AREA> (since Linux 2.6.0)" msgstr "B<PTRACE_GET_THREAD_AREA> (seit Linux 2.6.0)" #. type: Plain text msgid "" "This operation performs a similar task to B<get_thread_area>(2). It reads " "the TLS entry in the GDT whose index is given in I<addr>, placing a copy of " "the entry into the I<struct user_desc> pointed to by I<data>. (By contrast " "with B<get_thread_area>(2), the I<entry_number> of the I<struct user_desc> " "is ignored.)" msgstr "" "Diese Aktion führt eine ähnliche Aufgabe wie B<get_thread_area>(2) durch. " "Sie liest den TLS-Eintrag in dem GDT, dessen Index in I<addr> gegeben ist " "und legt eine Kopie des Eintrags in das durch I<data> verwiesende I<struct " "user_desc>. (Im Gegensatz wird mit B<get_thread_area>(2) die I<entry_number> " "des I<struct user_desc> ignoriert.)" #. type: TP #, no-wrap msgid "B<PTRACE_SET_THREAD_AREA> (since Linux 2.6.0)" msgstr "B<PTRACE_SET_THREAD_AREA> (seit Linux 2.6.0)" #. type: Plain text msgid "" "This operation performs a similar task to B<set_thread_area>(2). It sets " "the TLS entry in the GDT whose index is given in I<addr>, assigning it the " "data supplied in the I<struct user_desc> pointed to by I<data>. (By " "contrast with B<set_thread_area>(2), the I<entry_number> of the I<struct " "user_desc> is ignored; in other words, this ptrace operation can't be used " "to allocate a free TLS entry.)" msgstr "" "Diese Aktion führt eine ähnliche Aufgabe wie B<set_thread_area>(2) durch. " "Sie setzt den TLS-Eintrag in dem GDT, dessen Index in I<addr> gegeben ist, " "und weist ihm die in dem durch I<data> verwiesenen I<struct user_desc> zu. " "(Im Gegensatz zu B<set_thread_area>(2) wird die I<entry_number> des I<struct " "user_desc> ignoriert; mit anderen Worten, diese Ptrace-Aktion kann nicht zur " "Bereitstellung eines freien TLS-Eintrags verwandt werden.)" #. type: SS #, no-wrap msgid "Death under ptrace" msgstr "Tod unter Ptrace" #. type: Plain text msgid "" "When a (possibly multithreaded) process receives a killing signal (one whose " "disposition is set to B<SIG_DFL> and whose default action is to kill the " "process), all threads exit. Tracees report their death to their tracer(s). " "Notification of this event is delivered via B<waitpid>(2)." msgstr "" "Wenn ein Prozess (der möglicherweise aus mehreren Threads besteht) ein " "killendes Signal erhält (eines, dessen Einstellung auf B<SIG_DFL> gesetzt " "ist und dessen Standardaktion das Killen des Prozesses ist) werden alle " "Threads beendet. Verfolgte Prozesse melden ihren Tod an ihre(n) Verfolger. " "Die Benachrichtigung über dieses Ereignis wird über B<waitpid>(2) zugestellt." #. type: Plain text msgid "" "Note that the killing signal will first cause signal-delivery-stop (on one " "tracee only), and only after it is injected by the tracer (or after it was " "dispatched to a thread which isn't traced), will death from the signal " "happen on I<all> tracees within a multithreaded process. (The term \"signal-" "delivery-stop\" is explained below.)" msgstr "" "Beachten Sie, dass das killende Signal zuerst einen Signallieferstopp (auf " "nur einen verfolgten Prozess) verursachen wird und nur nachdem es durch den " "Verfolger eingespeist wurde (oder nachdem es an einen nicht verfolgten " "Thread versandt wurde), wird der Tod von dem Signal auf I<alle> verfolgten " "Prozesse innerhalb eines Prozesses mit mehreren Threads ausgehen. (Der " "Begriff »Signallieferstopp« wird nachfolgend erklärt.)" #. type: Plain text msgid "" "B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer " "can't suppress it. B<SIGKILL> kills even within system calls (syscall-exit-" "stop is not generated prior to death by B<SIGKILL>). The net effect is that " "B<SIGKILL> always kills the process (all its threads), even if some threads " "of the process are ptraced." msgstr "" "B<SIGKILL> erzeugt keinen »Signallieferstopp«. Daher kann der Verfolger es " "nicht unterdrücken. B<SIGKILL> killt sogar innerhalb von Systemaufrufen (der " "Systemaufrufbeendigungsstopp wird nicht vorrangig vor dem Tod durch " "B<SIGKILL> erzeugt). Der reine Effekt besteht darin, dass B<SIGKILL> den " "Prozess (all seine Threads) immer killt, sogar dann, wenn einige Threads des " "Prozesses verfolgt werden." #. type: Plain text msgid "" "When the tracee calls B<_exit>(2), it reports its death to its tracer. " "Other threads are not affected." msgstr "" "Wenn der verfolgte Prozess B<_exit>(2) aufruft, meldet er seinem Verfolger " "seinen Tod. Andere Threads werden nicht beeinflusst." #. type: Plain text msgid "" "When any thread executes B<exit_group>(2), every tracee in its thread group " "reports its death to its tracer." msgstr "" "Wenn irgendein Thread B<exit_group>(2) ausführt, meldet jeder verfolgte " "Prozess in dessen Gruppe seinen Tod an den Verfolger." #. type: Plain text msgid "" "If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen " "before actual death. This applies to exits via B<exit>(2), " "B<exit_group>(2), and signal deaths (except B<SIGKILL>, depending on the " "kernel version; see BUGS below), and when threads are torn down on " "B<execve>(2) in a multithreaded process." msgstr "" "Falls die Option B<PTRACE_O_TRACEEXIT> aktiv ist, wird B<PTRACE_EVENT_EXIT> " "vor dem tatsächlichen Tod auftreten. Dies wird angewandt, um mittels " "B<exit>(2), B<exit_group>(2) und Todessignalen (ausgenommen B<SIGKILL>, " "abhängig von der Kernel-Version, siehe FEHLER unten) zu beenden und wenn " "Threads bei B<execve>(2) in einem Prozess mit mehreren Threads zerrissen " "werden." #. type: Plain text msgid "" "The tracer cannot assume that the ptrace-stopped tracee exists. There are " "many scenarios when the tracee may die while stopped (such as B<SIGKILL>). " "Therefore, the tracer must be prepared to handle an B<ESRCH> error on any " "ptrace operation. Unfortunately, the same error is returned if the tracee " "exists but is not ptrace-stopped (for commands which require a stopped " "tracee), or if it is not traced by the process which issued the ptrace " "call. The tracer needs to keep track of the stopped/running state of the " "tracee, and interpret B<ESRCH> as \"tracee died unexpectedly\" only if it " "knows that the tracee has been observed to enter ptrace-stop. Note that " "there is no guarantee that I<waitpid(WNOHANG)> will reliably report the " "tracee's death status if a ptrace operation returned B<ESRCH>. " "I<waitpid(WNOHANG)> may return 0 instead. In other words, the tracee may be " "\"not yet fully dead\", but already refusing ptrace requests." msgstr "" "Der Verfolger kann nicht abschätzen, ob der von Ptrace gestoppte Prozess " "existiert. Es gibt mehrere Szenarien, in denen der verfolgte Prozess sterben " "kann, während er gestoppt ist (wie B<SIGKILL>). Daher muss der Verfolger " "vorbereitet werden, bei allen Ptrace-Aktionen einen B<ESRCH>-Fehler zu " "handhaben. Leider wird der gleiche Fehler zurückgegeben, falls der verfolgte " "Prozess existiert, aber nicht von Ptrace gestoppt wurde (für Befehle, die " "einen gestoppten, verfolgten Prozess erfordern) oder falls er nicht durch " "den Prozess verfolgt wird, der den Ptrace-Aufruf abschickte. Der Verfolger " "muss den Überblick über den »laufend«-/»gestoppt«-Status des verfolgten " "Prozesses behalten und B<ESRCH> nur dann als »verfolgter Prozess starb " "unerwartet« interpretieren, falls er weiß, dass der verfolgte Prozess " "beobachtet wurde, um in einen Ptrace-stopp einzutreten. Beachten Sie, dass " "es keine Garantie gibt, dass I<waitpid(WNOHANG)> zuverlässig den Todesstatus " "des verfolgten Prozesses meldet, falls eine Ptrace-Aktion B<ESRCH> " "zurückgibt. I<waitpid(WNOHANG)> könnte stattdessen 0 zurückgeben. In anderen " "Worten kann es sein, dass der verfolgte Prozess »noch nicht vollständig tot« " "ist, aber bereits Ptrace-Anfragen ablehnt." #. type: Plain text msgid "" "The tracer can't assume that the tracee I<always> ends its life by reporting " "I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this " "does not occur. For example, if a thread other than thread group leader " "does an B<execve>(2), it disappears; its PID will never be seen again, and " "any subsequent ptrace stops will be reported under the thread group leader's " "PID." msgstr "" "Der Verfolger kann nicht abschätzen, ob der verfolgte Prozess I<immer> sein " "Leben durch melden von I<WIFEXITED(status)> oder I<WIFSIGNALED(status)> " "aushaucht. Es gibt Fälle, in denen dies nicht geschieht. Falls ein Thread, " "der nicht führender Thread der Thread-Gruppe ist, zum Beispiel ein " "B<execve>(2) ausführt, verschwindet er; seine PID wird nie wieder gesehen " "und alle nachfolgenden Ptrace-Stopps werden unter der PID des führenden " "Threads der Thread-Gruppe gemeldet." #. type: SS #, no-wrap msgid "Stopped states" msgstr "Gestoppt-Status" #. type: Plain text msgid "" "A tracee can be in two states: running or stopped. For the purposes of " "ptrace, a tracee which is blocked in a system call (such as B<read>(2), " "B<pause>(2), etc.) is nevertheless considered to be running, even if the " "tracee is blocked for a long time. The state of the tracee after " "B<PTRACE_LISTEN> is somewhat of a gray area: it is not in any ptrace-stop " "(ptrace commands won't work on it, and it will deliver B<waitpid>(2) " "notifications), but it also may be considered \"stopped\" because it is not " "executing instructions (is not scheduled), and if it was in group-stop " "before B<PTRACE_LISTEN>, it will not respond to signals until B<SIGCONT> is " "received." msgstr "" "Ein verfolgter Prozess kann zwei Status haben: laufend oder gestoppt. Für " "die Zwecke von Ptrace wird ein durch einen Systemaufruf (wie B<read>(2), " "B<pause>(2), etc.) blockierter verfolgter Prozess dennoch als laufend " "betrachtet, sogar, wenn der verfolgte Prozess für lange Zeit blockiert ist. " "Der Status des verfolgten Prozesses nach B<PTRACE_LISTEN> ist eine Grauzone: " "Er ist nicht in einem Ptrace-Stopp (Ptrace-Befehle funktionieren nicht bei " "ihm und er wird B<waitpid>(2)-Benachrichtigungen übermitteln), aber er kann " "auch als »gestoppt« angesehen werden, da er keine Anweisungen ausführt (ist " "nicht eingeplant) und falls er vor B<PTRACE_LISTEN> in einem Gruppenstopp " "war, wird er nicht auf Signale antworten, bis er B<SIGCONT> empfängt." #. type: Plain text msgid "" "There are many kinds of states when the tracee is stopped, and in ptrace " "discussions they are often conflated. Therefore, it is important to use " "precise terms." msgstr "" "Es gibt viele Arten von Status, wenn ein verfolgter Prozess gestoppt wurde " "und in Ptrace-Diskussionen werden sie oft durcheinandergebracht. Daher ist " "es wichtig, präzise Begriffe zu verwenden." #. type: Plain text msgid "" "In this manual page, any stopped state in which the tracee is ready to " "accept ptrace commands from the tracer is called I<ptrace-stop>. Ptrace-" "stops can be further subdivided into I<signal-delivery-stop>, I<group-stop>, " "I<syscall-stop>, I<PTRACE_EVENT>stops, and so on. These stopped states are " "described in detail below." msgstr "" "In dieser Handbuchseite wird jeder Gestoppt-Status, in dem der verfolgte " "Prozess bereit ist, Ptrace-Befehle vom Verfolger zu akzeptieren, I<Ptrace-" "Stopp> genannt. Ptrace-Stopps können weiter in I<Signallieferstopp>, " "I<Gruppenstopp>, I<PTRACE_EVENT>-Stopps und so fort unterteilt werden. Diese " "gestoppten Status werden nachfolgend im Detail beschrieben." #. type: Plain text msgid "" "When the running tracee enters ptrace-stop, it notifies its tracer using " "B<waitpid>(2) (or one of the other \"wait\" system calls). Most of this " "manual page assumes that the tracer waits with:" msgstr "" "Wenn der laufende, verfolgte Prozess in Ptrace-Stopp eintritt, " "benachrichtigt er seinen Verfolger mittels B<waitpid>(2) (oder einem anderen " "der »wait«-Systemaufrufe). Meistens geht diese Handbuchseite davon aus, dass " "der Verfolger wartet mit:" #. type: Plain text #, no-wrap msgid " pid = waitpid(pid_or_minus_1, &status, __WALL);\n" msgstr " PID = waitpid(pid_or_minus_1, &status, __WALL);\n" #. Denys Vlasenko: #. Do we require __WALL usage, or will just using 0 be ok? (With 0, #. I am not 100% sure there aren't ugly corner cases.) Are the #. rules different if user wants to use waitid? Will waitid require #. WEXITED? #. type: Plain text msgid "" "Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 " "and I<WIFSTOPPED(status)> true." msgstr "" "Mit Ptrace-Stopp angehaltene, verfolgte Prozesse werden als Rückgaben mit " "I<PID> größer als 0 und »I<WIFSTOPPED(status)> true« gemeldet." #. type: Plain text msgid "" "The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, " "but implies their functionality." msgstr "" "Der Schalter B<__WALL> enthält nicht die Schalter B<WSTOPPED> und " "B<WEXITED>, impliziert aber ihre Funktionalität." #. type: Plain text msgid "" "Setting the B<WCONTINUED> flag when calling B<waitpid>(2) is not " "recommended: the \"continued\" state is per-process and consuming it can " "confuse the real parent of the tracee." msgstr "" "Es wird nicht empfohlen, den Schalter B<WCONTINUED> zu setzen, wenn " "B<waitpid>(2) aufgerufen wird: Der Status »continued« gilt pro Prozess und " "ihn zu verbrauchen, kann den echten Elternprozess des verfolgten Prozesses " "verwirren." #. type: Plain text msgid "" "Use of the B<WNOHANG> flag may cause B<waitpid>(2) to return 0 (\"no wait " "results available yet\") even if the tracer knows there should be a " "notification. Example:" msgstr "" "Die Benutzung des Schalters B<WNOHANG> könnte B<waitpid>(2) veranlassen, 0 " "zurückzugeben (»nocht keine Warteergebnisse verfügbar«), sogar dann, wenn " "der Verfolger weiß, dass dort eine Benachrichtigung sein soll. Beispiel:" #. type: Plain text #, no-wrap msgid "" " errno = 0;\n" " ptrace(PTRACE_CONT, pid, 0L, 0L);\n" " if (errno == ESRCH) {\n" " /* tracee is dead */\n" " r = waitpid(tracee, &status, __WALL | WNOHANG);\n" " /* r can still be 0 here! */\n" " }\n" msgstr "" " errno = 0;\n" " ptrace(PTRACE_CONT, pid, 0L, 0L);\n" " if (errno == ESRCH) {\n" " /* verfolgter Prozess ist tot */\n" " r = waitpid(tracee, &status, __WALL | WNOHANG);\n" " /* r kann hier immer noch 0 sein! */\n" " }\n" #. type: Plain text msgid "" "The following kinds of ptrace-stops exist: signal-delivery-stops, group-" "stops, B<PTRACE_EVENT> stops, syscall-stops. They all are reported by " "B<waitpid>(2) with I<WIFSTOPPED(status)> true. They may be differentiated " "by examining the value I<statusE<gt>E<gt>8>, and if there is ambiguity in " "that value, by querying B<PTRACE_GETSIGINFO>. (Note: the " "I<WSTOPSIG(status)> macro can't be used to perform this examination, because " "it returns the value I<(statusE<gt>E<gt>8)\\ &\\ 0xff>.)" msgstr "" "Die folgenden Arten von Ptrace-Stopps existieren: Signallieferstopps, " "Gruppenstopps, B<PTRACE_EVENT>-Stopps und Systemaufrufstopps. Sie alle " "werden von B<waitpid>(2) mit »I<WIFSTOPPED(status)> true« gemeldet. Sie " "könnten durch Untersuchen des Wertes I<statusE<gt>E<gt>8> unterschieden " "werden und, falls es eine Unklarheit im Wert gibt, durch Abfragen von " "B<PTRACE_GETSIGINFO>. (Hinweis: Das Makro I<WSTOPSIG(status)> kann nicht für " "diese Untersuchung verwandt werden, da es den Wert I<(statusE<gt>E<gt>8)\\ &" "\\ 0xff> zurückgibt.)" #. type: SS #, no-wrap msgid "Signal-delivery-stop" msgstr "Signallieferstopp" #. type: Plain text msgid "" "When a (possibly multithreaded) process receives any signal except " "B<SIGKILL>, the kernel selects an arbitrary thread which handles the " "signal. (If the signal is generated with B<tgkill>(2), the target thread " "can be explicitly selected by the caller.) If the selected thread is " "traced, it enters signal-delivery-stop. At this point, the signal is not " "yet delivered to the process, and can be suppressed by the tracer. If the " "tracer doesn't suppress the signal, it passes the signal to the tracee in " "the next ptrace restart request. This second step of signal delivery is " "called I<signal injection> in this manual page. Note that if the signal is " "blocked, signal-delivery-stop doesn't happen until the signal is unblocked, " "with the usual exception that B<SIGSTOP> can't be blocked." msgstr "" "Wenn ein Prozess (möglicherweise mit mehreren Threads) ein Signal außer " "B<SIGKILL> empfängt, wählt der Kernel einen beliebigen Thread aus, der das " "Signal handhabt. (Falls das Signal mit B<tgkill>(2) erzeugt wurde, kann der " "Ziel-Thread explizit durch den Aufrufenden ausgewählt werden.) Falls der " "ausgewählte Thread verfolgt wird, tritt er in einen Signallieferstopp ein. " "An diesem Punkt wird das Signal noch nicht an den Prozess zugestellt und " "kann durch den Verfolger unterdrückt werden. Falls der Verfolger das Signal " "nicht unterdrückt, übergibt er das Signal bei der nächsten Ptrace-" "Neustartanfrage an den verfolgten Prozess. Dieser zweite Schritt der " "Signalzustellung wird in dieser Handbuchseite I<Signaleinspeisung> genannt. " "Beachten Sie, dass, falls das Signal blockiert ist, der Signallieferstopp " "nicht auftritt, bis die Blockade des Signals aufgehoben wurde, mit der " "üblichen Ausnahme, dass B<SIGSTOP> nicht blockiert werden kann." #. type: Plain text msgid "" "Signal-delivery-stop is observed by the tracer as B<waitpid>(2) returning " "with I<WIFSTOPPED(status)> true, with the signal returned by " "I<WSTOPSIG(status)>. If the signal is B<SIGTRAP>, this may be a different " "kind of ptrace-stop; see the \"Syscall-stops\" and \"execve\" sections below " "for details. If I<WSTOPSIG(status)> returns a stopping signal, this may be " "a group-stop; see below." msgstr "" "Der Signallieferstopp wird vom Verfolger als B<waitpid>(2) beobachtet und " "kehrt mit »I<WIFSTOPPED(status)> true« mit dem Signal zurück, das von " "I<WSTOPSIG(status)> zurückgegeben wurde. Falls das Signal B<SIGTRAP> ist, " "könnte dies eine andere Art eines Ptrace-Stopps sein; Einzelheiten finden " "Sie in den Abschnitten »Systemaufrufstopps« und »execve« unterhalb. Falls " "I<WSTOPSIG(status)> ein stoppendes Signal zurückgibt, könnte dies ein " "Gruppenstopp sein; siehe unten."
signature.asc
Description: Digital signature