Hallo Mitübersetzer, jetzt hängt dieser E-Mail der Teil 2 (von 6) mit der für solche E-Mails von mir üblichen Bitte um Korrektur mit konstruktiver 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<F_GETLK> (I<struct flock *>)" msgstr "B<F_GETLK> (I<struct flock *>)" #. type: Plain text msgid "" "On input to this call, I<lock> describes a 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." msgstr "" "Als Eingabe zu diesem Aufruf beschreibt I<lock> eine Sperre, die auf diese " "Datei angewandt werden soll. Falls die Sperre angewandt werden könnte, setzt " "B<fcntl>() diese nicht wirklich, sondern liefert B<F_UNLCK> in dem Feld " "I<l_type> von I<lock> und lässt die anderen Felder dieser Struktur " "unverändert." #. type: Plain text msgid "" "If one or more incompatible locks would prevent this lock being placed, then " "B<fcntl>() returns details about one of those locks in the I<l_type>, " "I<l_whence>, I<l_start>, and I<l_len> fields of I<lock>. If the conflicting " "lock is a traditional (process-associated) record lock, then the I<l_pid> " "field is set to the PID of the process holding that lock. If the " "conflicting lock is an open file description lock, then I<l_pid> is set to " "-1. Note that the returned information may already be out of date by the " "time the caller inspects it." msgstr "" "Falls eine oder mehrere inkompatible Sperren das Setzen dieser Sperre " "verhinderten, dann liefert B<fcntl>() Details über eine dieser Sperren in " "den Feldern I<l_type>, I<l_whence>, I<l_start> und I<l_len> von I<lock> " "zurück. Falls die im Konflikt stehende Sperre eine traditionelle (Prozess-" "orientierte) Datensatzsperre ist, dann wird das Feld I<l_pid> auf die PID " "des Prozesses gesetzt, der die Sperre hält. Falls die in Konflikt stehende " "Sperre eine offene Dateideskriptionssperre ist, dann wird I<l_pid> auf -1 " "gesetzt. Beachten Sie, dass die zurückgelieferte Information zum Zeitpunkt " "der Analyse durch den Aufrufenden bereits veraltet sein kann." #. type: Plain text msgid "" "In order to place a read lock, I<fd> must be open for reading. In order to " "place a write lock, I<fd> must be open for writing. To place both types of " "lock, open a file read-write." msgstr "" "Um eine Lesesperre zu setzen, muss I<fd> zum Lesen offen sein. Um eine " "Schreibsperre zu setzen, muss I<fd> zum Schreiben offen sein. Um beide Typen " "setzen zu können, öffnen Sie eine Datei lese- und schreibbar." #. type: Plain text msgid "" "When placing locks with B<F_SETLKW>, the kernel detects I<deadlocks>, " "whereby two or more processes have their lock requests mutually blocked by " "locks held by the other processes. For example, suppose process A holds a " "write lock on byte 100 of a file, and process B holds a write lock on byte " "200. If each process then attempts to lock the byte already locked by the " "other process using B<F_SETLKW>, then, without deadlock detection, both " "processes would remain blocked indefinitely. When the kernel detects such " "deadlocks, it causes one of the blocking lock requests to immediately fail " "with the error B<EDEADLK>; an application that encounters such an error " "should release some of its locks to allow other applications to proceed " "before attempting regain the locks that it requires. Circular deadlocks " "involving more than two processes are also detected. Note, however, that " "there are limitations to the kernel's deadlock-detection algorithm; see BUGS." msgstr "" "Wenn Sperren mit B<F_SETLKW> gesetzt werden, erkennt der Kernel " "I<Verklemmungen>, bei denen zwei oder mehr Prozesse ihre Sperr-Anfragen " "gegenseitig durch Sperren, die von anderen Prozessen gehalten werden, " "blockieren. Nehmen Sie beispielsweise an, Prozess A hält eine Schreibsperre " "auf Byte 100 einer Datei und Prozess B hält eine Schreibsperre auf Byte 200. " "Falls jeder Prozess dann versucht, mit B<F_SETLKW> die vom anderen Prozess " "bereits gesperrten Bytes zu sperren, würden ohne Erkennung von Verklemmungen " "beide Prozesse unbegrenzt blockiert bleiben. Wenn der Kernel solche " "Verklemmungen erkennt, sorgt er dafür, dass eine der blockierenden " "Sperranfragen sofort mit dem Fehler B<EDEADLK> fehlschlägt. Eine Anwendung, " "die auf einen solchen Fehler trifft, sollte einige ihrer Sperren freigeben, " "um anderen Anwendungen das Fortfahren zu erlauben, bevor sie erneut " "versucht, die von ihr benötigten Sperren zu erlangen. Zirkuläre " "Verklemmungen mit mehr als zwei Prozessen werden auch erkannt. Beachten Sie " "aber, dass es eine Begrenzung der Erkennung von Verklemmungen im Kernel " "gibt; siehe FEHLER." #. type: Plain text msgid "" "As well as being removed by an explicit B<F_UNLCK>, record locks are " "automatically released when the process terminates." msgstr "" "Datensatzsperren werden durch ein explizites B<F_UNLCK> entfernt und auch " "freigegeben, wenn der Prozess sich beendet." #. type: Plain text msgid "" "Record locks are not inherited by a child created via B<fork>(2), but are " "preserved across an B<execve>(2)." msgstr "" "Datensatzsperren werden nicht von einem durch B<fork>(2) erstellten Kind " "geerbt, aber über ein B<execve>(2) hinweg erhalten." #. type: Plain text msgid "" "Because of the buffering performed by the B<stdio>(3) library, the use of " "record locking with routines in that package should be avoided; use " "B<read>(2) and B<write>(2) instead." msgstr "" "Aufgrund des durch die B<stdio>(3)-Bibliothek durchgeführten Pufferns sollte " "die Verwendung von Datensatzsperren mit Routinen aus diesem Paket vermieden " "werden; verwenden Sie stattdessen B<read>(2) und B<write>(2)." #. type: Plain text msgid "" "The record locks described above are associated with the process (unlike the " "open file description locks described below). This has some unfortunate " "consequences:" msgstr "" "Die weiter oben beschriebenen Datensatzsperren werden dem Prozess zugeordnet " "(anders als die weiter unten beschriebenen Dateideskriptionssperren). Dies " "hat einige unglückliche Konsequenzen:" #. type: IP #, no-wrap msgid "*" msgstr "*" #. (Additional file descriptors referring to the same file #. may have been obtained by calls to #. .BR open "(2), " dup "(2), " dup2 "(2), or " fcntl ().) #. type: Plain text msgid "" "If a process closes I<any> file descriptor referring to a file, then all of " "the process's locks on that file are released, regardless of the file " "descriptor(s) on which the locks were obtained. This is bad: it means that " "a process can lose its locks on a file such as I</etc/passwd> or I</etc/" "mtab> when for some reason a library function decides to open, read, and " "close the same file." msgstr "" "Falls ein Prozess I<irgendeinen> Dateideskriptor mit Bezug zu einer Datei " "schließt, dann werden alle Sperren des Prozesses für diese Datei aufgehoben, " "unabhängig von den Dateideskriptor(en), mit denen diese Sperren erworben " "wurden. Das ist schlecht: Es bedeutet, dass ein Prozess seine Sperren auf " "eine Datei wie I</etc/passwd> oder I</etc/mtab> verlieren kann, wenn aus " "irgendeinem Grund eine Bibliotheksfunktion sich entscheidet, die gleiche " "Datei zu öffnen, zu lesen und zu schließen." #. type: Plain text msgid "" "The threads in a process share locks. In other words, a multithreaded " "program can't use record locking to ensure that threads don't simultaneously " "access the same region of a file." msgstr "" "Die Threads in einem Prozess nutzen die Sperren gemeinsam. Mit anderen " "Worten, ein Programm mit mehreren Threads kann Datensatzsperren nicht benutzen, um " "sicherzustellen, dass die Threads nicht simultan auf die gleichen Regionen " "einer Datei zugreifen." #. type: Plain text msgid "Open file description locks solve both of these problems." msgstr "Offene Dateideskriptionssperren lösen beide Probleme." #. type: SS #, no-wrap msgid "Open file description locks (non-POSIX)" msgstr "Offene Dateideskriptionssperren (nicht POSIX)" #. 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 "" #. 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 "" #. 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." #. type: Plain text msgid "" "Open file description locks placed via the same open file description (i.e., " "via the same file descriptor, or via a duplicate of the file descriptor " "created by B<fork>(2), B<dup>(2), B<fcntl>() B<F_DUPFD>, and so on) are " "always compatible: if a new lock is placed on an already locked region, then " "the existing lock is converted to the new lock type. (Such conversions may " "result in splitting, shrinking, or coalescing with an existing lock as " "discussed above.)" msgstr "" "Offene Dateideskriptionssperren, die über die gleichen offenen " "Dateideskriptionen (d.h. über den gleichen Dateideskriptor oder über durch " "B<fork>(2), B<dup>(2), B<fcntl>() B<F_DUPFD> und so weiter erstellte " "Duplikate des Dateideskriptors) gesetzt werden, sind immer kompatibel: Falls " "auf einen bereits gesperrten Bereich eine neue Sperre gesetzt wird, wird die " "existierende Sperre in den neuen Sperrtyp umgewandelt. (Solche Umwandlungen " "können wie oben beschrieben zum Teilen, Verkleinern oder Verschmelzen mit " "einer existierenden Sperre führen.)" #. 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." #. 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 "" #. type: Plain text msgid "" "The commands for working with open file description locks are analogous to " "those used with traditional locks:" msgstr "" "Die Befehle für den Umgang mit offenen Dateideskriptionssperren sind analog " "zu denen, die mit traditionellen Sperren verwandt werden:" #. type: TP #, no-wrap msgid "B<F_OFD_SETLK> (I<struct flock *>)" msgstr "B<F_OFD_SETLK> (I<struct flock *>)" #. 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>." #. type: TP #, no-wrap msgid "B<F_OFD_SETLKW> (I<struct flock *>)" msgstr "B<F_OFD_SETLKW> (I<struct flock *>)" #. type: Plain text msgid "" "As for B<F_OFD_SETLK>, but if a conflicting lock is held on the file, then " "wait for that lock to be released. If a signal is caught while waiting, " "then the call is interrupted and (after the signal handler has returned) " "returns immediately (with return value -1 and I<errno> set to B<EINTR>; see " "B<signal>(7))." msgstr "" "Wie bei B<F_OFD_SETLK>, aber falls eine im Konflikt stehende Sperre auf der " "Datei gehalten wird, dann wird auf die Freigabe dieser Sperre gewartet. " "Falls beim Warten ein Signal gefangen wird, dann wird der Aufruf " "unterbrochen und (nachdem der Signal-Handler zurückgekehrt ist) sofort " "zurückgekehrt (mit einem Rückgabewert -1 und I<errno> auf B<EINTR> gesetzt, " "siehe B<signal>(7))." #. type: TP #, no-wrap msgid "B<F_OFD_GETLK> (I<struct flock *>)" msgstr "B<F_OFD_GETLK> (I<struct flock *>)" #. 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." #. 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.)" #. type: SS #, no-wrap msgid "Mandatory locking" msgstr "Pflichtsperren" #. type: Plain text msgid "" "I<Warning>: the Linux implementation of mandatory locking is unreliable. " "See BUGS below. Because of these bugs, and the fact that the feature is " "believed to be little used, since Linux 4.5, mandatory locking has been made " "an optional feature, governed by a configuration option " "(B<CONFIG_MANDATORY_FILE_LOCKING>). This is an initial step toward removing " "this feature completely." msgstr "" "I<Warnung>: Die Linux-Implementierung der Pflichtsperren ist unzuverlässig. " "Siehe FEHLER unten. Aufgrund dieser Fehler und der Tatsache, dass davon " "ausgegangen wird, dass diese Funktionalität wenig genutzt wird, sind die " "Pflichtsperren seit Linux 4.5 eine optionale Funktionalität, die durch eine " "Konfigurationsoption (B<CONFIG_MANDATORY_FILE_LOCKING>) gesteuert werden. " "Dies ist der erste Schritt hin zur kompletten Entfernung dieser " "Funktionalität." #. 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 "" #. 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." #. type: Plain text msgid "" "To make use of mandatory locks, mandatory locking must be enabled both on " "the filesystem that contains the file to be locked, and on the file itself. " "Mandatory locking is enabled on a filesystem using the \"-o mand\" option to " "B<mount>(8), or the B<MS_MANDLOCK> flag for B<mount>(2). Mandatory locking " "is enabled on a file by disabling group execute permission on the file and " "enabling the set-group-ID permission bit (see B<chmod>(1) and B<chmod>(2))." msgstr "" "Um verpflichtende Sperren zu verwenden, müssen verpflichtende Sperren sowohl " "auf dem Dateisystem, das die zu sperrende Datei enthält, aktiviert werden " "als auch auf der Datei selbst. Verpflichtende Sperren werden auf " "Dateisystemen mit der Option »-o mand« von B<mount>(8) oder dem Schalter " "B<MS_MANDLOCK> für B<mount>(2) aktiviert. Verpflichtende Sperren werden für " "eine Datei aktiviert, indem das Ausführrecht für die Datei entfernt und das " "»set-group-ID«-Rechte-Bit aktiviert wird (siehe B<chmod>(1) und B<chmod>(2))." #. type: Plain text msgid "" "Mandatory locking is not specified by POSIX. Some other systems also " "support mandatory locking, although the details of how to enable it vary " "across systems." msgstr "" "Verpflichtende Sperren werden nicht durch POSIX spezifiziert. Einige andere " "Systeme unterstützen auch verpflichtende Sperren, allerdings unterscheiden " "sich die Details zur Aktivierung zwischen den Systemen." #. type: SS #, no-wrap msgid "Managing signals" msgstr "Signale verwalten" #. type: Plain text msgid "" "B<F_GETOWN>, B<F_SETOWN>, B<F_GETOWN_EX>, B<F_SETOWN_EX>, B<F_GETSIG> and " "B<F_SETSIG> are used to manage I/O availability signals:" msgstr "" "B<F_GETOWN>, B<F_SETOWN>, B<F_GETOWN_EX>, B<F_SETOWN_EX>, B<F_GETSIG> und " "B<F_SETSIG> werden zur Verwaltung der E/A-Verfügbarkeitssignale verwandt:" #. type: TP #, no-wrap msgid "B<F_GETOWN> (I<void>)" msgstr "B<F_GETOWN> (I<void>)" # FIXME Is there an ID after the first "process group" missing? #. type: Plain text msgid "" "Return (as the function result) the process ID or process group currently " "receiving B<SIGIO> and B<SIGURG> signals for events on file descriptor " "I<fd>. Process IDs are returned as positive values; process group IDs are " "returned as negative values (but see BUGS below). I<arg> is ignored." msgstr "" "Liefert (als Funktionsergebnis) die Prozesskennung oder Prozessgruppe " "zurück, die derzeit B<SIGIO>- und B<SIGURG>-Signale für Ereignisse auf " "Dateideskriptor I<fd> erhält. Prozesskennungen werden als positive Werte, " "Prozessgruppenkennungen als negative Werte zurückgeliefert (siehe aber auch " "FEHLER unten). I<arg> wird ignoriert." #. type: TP #, no-wrap msgid "B<F_SETOWN> (I<int>)" msgstr "B<F_SETOWN> (I<int>)" #. type: Plain text msgid "" "Set the process ID or process group ID that will receive B<SIGIO> and " "B<SIGURG> signals for events on the file descriptor I<fd>. The target " "process or process group ID is specified in I<arg>. A process ID is " "specified as a positive value; a process group ID is specified as a negative " "value. Most commonly, the calling process specifies itself as the owner " "(that is, I<arg> is specified as B<getpid>(2))." msgstr "" "Setzt die Prozesskennung oder Prozessgruppenkennung, die B<SIGIO>- und " "B<SIGURG>-Signale für Ereignisse auf dem Dateideskriptor I<fd> erhalten " "wird. Der Zielprozess oder die Zielprozessgruppe wird in I<arg> festgelegt. " "Eine Prozesskennung wird als positiver, eine Prozessgruppenkennung wird als " "negativer Wert festgelegt. Häufig legt sich der aufrufende Prozess als der " "Eigentümer fest (d.h. I<arg> wird als B<getpid>(2) festgelegt)." #. 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." #. 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." # #. The following appears to be rubbish. It doesn't seem to #. be true according to the kernel source, and I can write #. a program that gets a terminal-generated SIGIO even though #. it is not the foreground process group of the terminal. #. -- MTK, 8 Apr 05 #. If the file descriptor #. .I fd #. refers to a terminal device, then SIGIO #. signals are sent to the foreground process group of the terminal. #. type: Plain text msgid "" "If the file descriptor I<fd> refers to a socket, B<F_SETOWN> also selects " "the recipient of B<SIGURG> signals that are delivered when out-of-band data " "arrives on that socket. (B<SIGURG> is sent in any situation where " "B<select>(2) would report the socket as having an \"exceptional condition" "\".)" msgstr "" "Falls der Dateideskriptor I<fd> sich auf ein Socket bezieht, wählt " "B<F_SETOWN> auch den Empfänger des Signals B<SIGURG>, das ausgeliefert wird, " "wenn Außerbanddaten beim Socket eintreffen, aus. (B<SIGURG> wird in jeder " "Situation gesandt, in der B<select>(2) berichtete, dass das Socket eine " "»außergewöhnliche Bedingung« habe.)" #. 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:" #. 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." #. type: Plain text msgid "" "The above behavior was accidentally dropped in Linux 2.6.12, and won't be " "restored. From Linux 2.6.32 onward, use B<F_SETOWN_EX> to target B<SIGIO> " "and B<SIGURG> signals at a particular thread." msgstr "" "Das obige Verhalten wurde in Linux 2.6.12 versehentlich deaktivert und wird " "nicht mehr wiederhergestellt. Seit Linux 2.6.32 verwenden Sie " "B<F_SETOWN_EX>, um die Signale B<SIGIO> und B<SIGURG> auf einen bestimmten " "Thread anzuwenden."
Attachment:
signature.asc
Description: Digital signature