Re: [RFR] man://manpages-de/man2/fcntl.2.po (Teil 2)
Hallo Helge,
#. FIXME . Review progress into POSIX
#. http://austingroupbugs.net/view.php?id=768
#. type: Plain text
msgid ""
"Open file description locks are advisory byte-range locks whose
operation is "
"in most respects identical to the traditional record locks described
above. "
"This lock type is Linux-specific, and available since Linux 3.15.
(There is "
"a proposal with the Austin Group to include this lock type in the next "
"revision of POSIX.1.) For an explanation of open file descriptions,
see "
"B<open>(2)."
msgstr ""
Offene Dateideskriptorsperren sind angewiesene Byte-Bereichssperren,
deren Funktionsweise in den meisten Empfehlungen den herkömmlichen, oben
beschriebenen Datensatzsperren entspricht. Dieser Sperrtyp ist
Linux-spezifisch und seit Linux 3.15 verfügbar. (Es gibt einen Vorschlag
der Austin-Gruppe, diesen Sperrtyp in die nächste Überarbeitung von
POSIX.1 aufzunehmen.) Eine Erklärung offener Dateideskriptionen finden
Sie bei B<open>(2).
#. type: Plain text
msgid ""
"The principal difference between the two lock types is that whereas "
"traditional record locks are associated with a process, open file "
"description locks are associated with the open file description on
which "
"they are acquired, much like locks acquired with B<flock>(2).
Consequently "
"(and unlike traditional advisory record locks), open file description
locks "
"are inherited across B<fork>(2) (and B<clone>(2) with
B<CLONE_FILES>), and "
"are only automatically released on the last close of the open file "
"description, instead of being released on any close of the file."
msgstr ""
Der Hauptunterschied zwischen den beiden Sperrtypen besteht darin, dass
die herkömmlichen Datensatzsperren mit dem Prozess verbunden sind,
während Sperren offener Dateideskriptionen mit der offenen
Dateideskription verbunden sind, für die sie mit B<flock>(2) erlangt
wurden. Konsequenterweise (und anders als herkömmliche angewiesene
Datensatzsperren) werden Sperren offener Dateideskriptionen über
B<fork>(2) (und B<clone>(2) mit B<CLONE_FILES>) geerbt und werden nur
automatisch durch das Schließen der letzten offenen Dateideskription
freigegeben, statt bei jedem Schließen der Datei.
#. type: Plain text
msgid ""
"Conflicting lock combinations (i.e., a read lock and a write lock or
two "
"write locks) where one lock is an open file description lock and the
other "
"is a traditional record lock conflict even when they are acquired by
the "
"same process on the same file descriptor."
msgstr ""
"Im Konflikt stehende Kombinationen von Sperren (d.h. eine Lese-Sperre
und "
"eine Schreib-Sperre oder zwei Schreib-Sperren), wobei eine Sperre eine "
"offene Dateideskriptorsperre und die andere eine traditionelle "
"Datensatzsperre ist, sind selbst dann im Konflikt, wenn sie vom
gleichen "
"Prozess auf dem gleichen Dateideskriptor aufgenommen wurden."
s/Dateideskriptorsperre/Dateideskriptionssperre/
#. type: Plain text
msgid ""
"On the other hand, open file description locks may conflict with each
other "
"when they are acquired via different open file descriptions. Thus, the "
"threads in a multithreaded program can use open file description
locks to "
"synchronize access to a file region by having each thread perform its
own "
"B<open>(2) on the file and applying locks via the resulting file
descriptor."
msgstr ""
"Auf der anderen Seite können offene Dateideskriptionssperren
zueinander im "
"Konflikt stehen, wenn sie über verschiedene offene Dateideskriptionen "
"erlangt wurden. Daher können die Threads in einem Programm mit
mehreren Threads "
"offene Dateideskriptoren dazu verwenden, um den Zugriff auf
Dateiregionen zu "
"koordinieren, indem jeder Thread sein eigenes B<open>(2) auf der Datei "
"durchführt und die Sperren über den entstehenden Dateideskriptor
anwendet."
s/Dateideskriptoren dazu/Dateideskriptionssperren dazu/
#. type: Plain text
msgid ""
"As with traditional advisory locks, the third argument to B<fcntl>(), "
"I<lock>, is a pointer to an I<flock> structure. By contrast with "
"traditional record locks, the I<l_pid> field of that structure must
be set "
"to zero when using the commands described below."
msgstr ""
Wie bei herkömmlichen angewisenen Sperren, ist das dritte Argument für
B<fcntl>(), I<lock>, ein Zeiger auf eine I<flock>-Struktur. Im Gegensatz
zu herkömmlichen Datensatzsperren, muss das Feld I<l_pid> dieser
Struktur bei Verwendung der unterhalb beschriebenen Befehle auf null
gesetzt werden.
#. type: Plain text
msgid ""
"Acquire an open file description lock (when I<l_type> is B<F_RDLCK> or "
"B<F_WRLCK>) or release an open file description lock (when I<l_type>
is "
"B<F_UNLCK>) on the bytes specified by the I<l_whence>, I<l_start>, and "
"I<l_len> fields of I<lock>. If a conflicting lock is held by another "
"process, this call returns -1 and sets I<errno> to B<EAGAIN>."
msgstr ""
"Erlangt eine offene Dateideskriptorensperre (wenn I<l_type>
B<F_RDLCK> oder "
"B<F_WRLCK> ist) oder gibt eine offene Dateideskriptorensperre frei
(wenn "
"I<l_type> B<F_UNLCK> ist), für die Bytes, die durch die Felder
I<l_whence>, "
"I<l_start> und I<l_len> festgelegt sind. Falls durch einen anderen
Prozess "
"eine im Konflikt stehende Sperre gehalten wird, liefert der Aufruf -1
zurück "
"und setzt I<errno> auf B<EAGAIN>."
s/Dateideskriptorensperre/Dateideskriptionssperre/ (2x)
#. type: Plain text
msgid ""
"On input to this call, I<lock> describes an open file description
lock we "
"would like to place on the file. If the lock could be placed,
B<fcntl>() "
"does not actually place it, but returns B<F_UNLCK> in the I<l_type>
field of "
"I<lock> and leaves the other fields of the structure unchanged. If
one or "
"more incompatible locks would prevent this lock being placed, then
details "
"about one of these locks are returned via I<lock>, as described above
for "
"B<F_GETLK>."
msgstr ""
"Bei der Eingabe zu diesem Aufruf beschreibt I<lock> eine offene "
"Dateideskriptorsperre, die auf der Datei gesetzt werden soll. Falls die "
"Sperre gesetzt werden könnte, setzt B<fcntl>() nicht wirklich, sondern "
"liefert im Feld I<l_type> von I<lock> B<F_UNLCK> zurück und lässt die "
"anderen Felder der Struktur unverändert. Falls eine oder mehrere "
"inkompatible Sperren das Setzen dieser Sperre behinderten, werden die "
"Details über eine dieser Sperren mittels I<lock>, wie oben für
B<F_GETLK> "
"beschrieben, zurückgeliefert."
s/Dateideskriptorsperre/Dateideskriptionssperre/
s/setzt B<fcntl>()/setzt sie B<fcntl>()/
#. commit 57b65325fe34ec4c917bc4e555144b4a94d9e1f7
#. type: Plain text
msgid ""
"In the current implementation, no deadlock detection is performed for
open "
"file description locks. (This contrasts with process-associated record "
"locks, for which the kernel does perform deadlock detection.)"
msgstr ""
"In der aktuellen Implementierung wird nicht auf Verklemmungen für
offene "
"Dateideskriptorensperren geprüft. (Dies steht im Gegensatz zu den "
"prozessorientierten Datensatzsperren, bei denen der Kernel eine
Erkennung "
"von Verklemmungen durchführt.)"
s/Dateideskriptorensperren/Dateideskriptionssperren/
#. type: Plain text
msgid ""
"By default, both traditional (process-associated) and open file
description "
"record locks are advisory. Advisory locks are not enforced and are
useful "
"only between cooperating processes."
msgstr ""
Standardmäßig werden herkömmliche (prozessorientierte) und Sperren
offener Dateideskriptionsdatensätze angewiesen. Angewiesene Sperren
werden icht erzwungen und sind nur bei der Zusammenarbeit von Prozessen
nützlich.
#. type: Plain text
#, fuzzy
msgid ""
"Both lock types can also be mandatory. Mandatory locks are enforced
for all "
"processes. If a process tries to perform an incompatible access (e.g., "
"B<read>(2) or B<write>(2)) on a file region that has an incompatible "
"mandatory lock, then the result depends upon whether the
B<O_NONBLOCK> flag "
"is enabled for its open file description. If the B<O_NONBLOCK> flag
is not "
"enabled, then the system call is blocked until the lock is removed or "
"converted to a mode that is compatible with the access. If the "
"B<O_NONBLOCK> flag is enabled, then the system call fails with the
error "
"B<EAGAIN>."
msgstr ""
"Beide Sperrtypen können auch verpflichtend sein. Verpflichtende Sperren "
"werden für alle Prozesse durchgesetzt. Falls ein Prozess einen
inkompatiblen "
"Zugriff auf einen Dateibereich versucht (z.B. B<read>(2) oder
B<write>(2)), "
"der eine inkompatible verpflichtende Sperre hat, dann hängt das
Ergebnis "
"davon ab, ob der Schalter B<O_NONBLOCK> für seinen FIXME aktiviert ist. "
"Falls der Schalter B<O_NONBLOCK> nicht aktiviert ist, wird der
Systemaufruf "
"blockiert, bis die Sperre entfernt oder in einen Modus umgewandelt
wurde, "
"der mit dem Zugriff kompatibel ist. Falls der Schalter B<O_NONBLOCK> "
"aktiviert ist, wird der Systemaufruf mit dem Fehler B<EAGAIN>
fehlschlagen."
s/seinen FIXME/seine offene Dateideskription/
#. type: Plain text
msgid ""
"As well as setting the file descriptor owner, one must also enable "
"generation of signals on the file descriptor. This is done by using
the "
"B<fcntl>() B<F_SETFL> command to set the B<O_ASYNC> file status flag
on the "
"file descriptor. Subsequently, a B<SIGIO> signal is sent whenever
input or "
"output becomes possible on the file descriptor. The B<fcntl>()
B<F_SETSIG> "
"command can be used to obtain delivery of a signal other than B<SIGIO>."
msgstr ""
"Neben dem Setzen des Dateideskriptoreigentümers muss auch die
Erzeugung von "
"Signalen auf dem Dateideskriptor aktiviert werden. Dies erfolgt durch
den "
"Befehl B<fcntl>() B<F_SETFL>, um den Dateistatusschalter B<SIGIO> zu
setzen, "
"wannimer Ein- oder Ausgabe auf dem Dateideskriptor möglich wird. Der
Befehl "
"B<fcntl>() B<F_SETSIG> kann zum Erhalt des Empfangs von Signalen neben "
"B<SIGIO> verwandt werden."
s/wannimer/wann auch immer/ oder /immer wenn/
#. type: Plain text
msgid ""
"Sending a signal to the owner process (group) specified by
B<F_SETOWN> is "
"subject to the same permissions checks as are described for B<kill>(2), "
"where the sending process is the one that employs B<F_SETOWN> (but
see BUGS "
"below). If this permission check fails, then the signal is silently "
"discarded. I<Note>: The B<F_SETOWN> operation records the caller's "
"credentials at the time of the B<fcntl>() call, and it is these saved "
"credentials that are used for the permission checks."
msgstr ""
"Senden von Signalen an den durch B<F_SETOWN> festgelegten Prozesseigner "
"(Gruppe) unterliegt den gleichen Rechteprüfungen wie sie in B<kill>(2) "
"beschrieben sind, wobei der sendende Prozess derjenige ist, der
B<F_SETOWN> "
"einsetzt (siehe aber FEHLER unten). Falls diese Rechteprüfung
fehlschlägt "
"wird das Signal ohne Rückmeldung verworfen. I<Hinweis>: Die Aktion "
"B<F_SETOWN> notiert die Berechtigungen des Aufrufenden zum Zeitpunkt
des "
"Aufrufs von B<fcntl>() und es sind diese gespeicherten
Berechtigungen, die "
"für die Rechteüberprüfung verwandt werden."
s/fehlschlägt/fehlschlägt,/
#. type: Plain text
msgid ""
"The following was true in 2.6.x kernels up to and including kernel
2.6.11:"
msgstr "Das folgende stimmte in 2.6.x-Kerneln bis einschließlich 2.6.11:"
s/folgende/Folgende/
#. The relevant place in the (2.6) kernel source is the
#. 'switch' in fs/fcntl.c::send_sigio_to_task() -- MTK, Apr 2005
#. send_sigurg()/send_sigurg_to_task() bypasses
#. kill_fasync()/send_sigio()/send_sigio_to_task()
#. to directly call send_group_sig_info()
#. -- MTK, Apr 2005 (kernel 2.6.11)
#. type: Plain text
msgid ""
"If a nonzero value is given to B<F_SETSIG> in a multithreaded process "
"running with a threading library that supports thread groups (e.g.,
NPTL), "
"then a positive value given to B<F_SETOWN> has a different meaning:
instead "
"of being a process ID identifying a whole process, it is a thread ID "
"identifying a specific thread within a process. Consequently, it may
be "
"necessary to pass B<F_SETOWN> the result of B<gettid>(2) instead of "
"B<getpid>(2) to get sensible results when B<F_SETSIG> is used. (In
current "
"Linux threading implementations, a main thread's thread ID is the
same as "
"its process ID. This means that a single-threaded program can
equally use "
"B<gettid>(2) or B<getpid>(2) in this scenario.) Note, however, that
the "
"statements in this paragraph do not apply to the B<SIGURG> signal
generated "
"for out-of-band data on a socket: this signal is always sent to
either a "
"process or a process group, depending on the value given to B<F_SETOWN>."
msgstr ""
"Falls in einem Prozess mit mehreren Threads, der mit einer
Threading-Bibliothek "
"läuft, die Thread-Gruppen unterstützt (z.B. NPTL), ein von Null "
"verschiedener Wert an B<F_SETSIG> übergeben wird, dann hat ein an "
"B<F_SETOWN> übergebener positiver Wert eine andere Bedeutung: Statt
eine "
"Prozesskennung zu sein, die einen gesamten Prozess identifiziert, ist
es "
"eine Thread-Kennung, die einen bestimmten Prozess innerhalb des Threads "
"identifiziert. Konsequenterweise kann es notwendig sein, B<F_SETOWN>
das "
"Ergebnis von B<gettid>(2) statt von B<getpid>(2) zu übergeben, um "
"vernünftige Ergebnisse zu erhalten, wenn B<F_SETSIG> benutzt wird. (In "
"aktuellen Linux-Threading-Implementierungen ist die Kennung des Haupt-"
"Threads identisch zu seiner Prozesskennung. Das bedeutet, dass ein
Programm "
"mit nur einem einzigen Thread in diesem Szenario genauso B<gettid>(2)
oder "
"B<getpid>(2) verwenden kann.) Beachten Sie allerdings, dass die
Aussage in "
"diesem Absatz nicht auf das Signal B<SIGURG> für Außerbanddaten für ein "
"Socket zutreffen: Dieses Signal wird immer zu einem Prozess oder einer "
"Prozessgruppe gesandt, abhängig vom in B<F_SETOWN> übergebenen Wert."
s/zutreffen/zutrifft/ (bezieht sich auf »Aussage«)
Gruß,
Chris
Reply to: