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

[RFR] man://manpages-de/man2/ptrace.2 (Teil 3)



Hallo Mitübersetzer,
und angehängt Teil 3 mit der Bitte um konstruktive Kritik.

Vielen Dank & Grüße

             Helge

-- 
      Dr. Helge Kreutzmann                     debian@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."

Attachment: signature.asc
Description: Digital signature


Reply to: