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

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: