Hallo Mitübersetzer, und anbei Teil 4 mit der bitte um konstruktive Kritik und ggf. Übersetzungsvorschläge.
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<EOPNOTSUPP>" msgstr "B<EOPNOTSUPP>" #. type: Plain text msgid "The filesystem containing I<pathname> does not support B<O_TMPFILE>." msgstr "" "Das Dateisystem, das I<pathname> enthält, unterstützt B<O_TMPFILE> nicht." #. type: TP #, no-wrap msgid "B<EOVERFLOW>" msgstr "B<EOVERFLOW>" #. See http://bugzilla.kernel.org/show_bug.cgi?id=7253 #. "Open of a large file on 32-bit fails with EFBIG, should be EOVERFLOW" #. Reported 2006-10-03 #. type: Plain text msgid "" "I<pathname> refers to a regular file that is too large to be opened. The " "usual scenario here is that an application compiled on a 32-bit platform " "without I<-D_FILE_OFFSET_BITS=64> tried to open a file whose size exceeds " "I<(1E<lt>E<lt>31)-1> bytes; see also B<O_LARGEFILE> above. This is the " "error specified by POSIX.1; in kernels before 2.6.24, Linux gave the error " "B<EFBIG> for this case." msgstr "" "I<pathname> bezieht sich auf eine normale Datei, die zu groß zum Öffnen ist. " "Das normale Szenario ist, dass eine auf einer 32-Bit-Plattform ohne I<-" "D_FILE_OFFSET_BITS=64> übersetzte Anwendung versuchte, eine Datei zu öffnen, " "deren Größe I<(1E<lt>E<lt>31)-1> byte überschritt; siehe auch B<O_LARGEFILE> " "weiter oben. Dies ist der durch POSIX.1 festgelegte Fehler; in Kerneln vor " "2.6.24 gab Linux in diesem Fall den Fehler B<EFBIG>." #. type: TP #, no-wrap msgid "B<EPERM>" msgstr "B<EPERM>" #. Strictly speaking, it's the filesystem UID... (MTK) #. type: Plain text msgid "" "The B<O_NOATIME> flag was specified, but the effective user ID of the caller " "did not match the owner of the file and the caller was not privileged." msgstr "" "Der Schalter B<O_NOATIME> war festgelegt, aber die effektive Benutzer-ID des " "Aufrufenden passte nicht auf den Eigentümer der Datei und der Aufrufende war " "nicht privilegiert." #. type: Plain text msgid "The operation was prevented by a file seal; see B<fcntl>(2)." msgstr "" "Die Aktion wurde durch eine Dateiversiegelung verhindert; siehe B<fcntl>(2)." #. type: TP #, no-wrap msgid "B<EROFS>" msgstr "B<EROFS>" #. type: Plain text msgid "" "I<pathname> refers to a file on a read-only filesystem and write access was " "requested." msgstr "" "I<pathname> bezieht sich auf eine Datei auf einem schreibgeschützten " "Dateisystem, und Schreibzugriff wurde angefordert." #. type: TP #, no-wrap msgid "B<ETXTBSY>" msgstr "B<ETXTBSY>" #. type: Plain text msgid "" "I<pathname> refers to an executable image which is currently being executed " "and write access was requested." msgstr "" "I<pathname> bezieht sich auf ein ausführbares Abbild, das derzeit ausgeführt " "wird und Schreibzugriff wurde erbeten." #. type: TP #, no-wrap msgid "B<EWOULDBLOCK>" msgstr "B<EWOULDBLOCK>" #. type: Plain text msgid "" "The B<O_NONBLOCK> flag was specified, and an incompatible lease was held on " "the file (see B<fcntl>(2))." msgstr "" #. type: Plain text msgid "The following additional errors can occur for B<openat>():" msgstr "Die folgenden zusätzlichen Fehler können bei B<openat>() auftreten:" #. type: TP #, no-wrap msgid "B<EBADF>" msgstr "B<EBADF>" #. type: Plain text msgid "I<dirfd> is not a valid file descriptor." msgstr "I<dirfd> ist kein zulässiger Dateideskriptor." #. type: Plain text msgid "" "I<pathname> is a relative pathname and I<dirfd> is a file descriptor " "referring to a file other than a directory." msgstr "" "I<pathname> ist ein relativer Pfadname und I<dirfd> ist ein Dateideskriptor, " "der sich auf eine Datei statt auf ein Verzeichnis bezieht." #. type: SH #, no-wrap msgid "VERSIONS" msgstr "VERSIONEN" #. type: Plain text msgid "" "B<openat>() was added to Linux in kernel 2.6.16; library support was added " "to glibc in version 2.4." msgstr "" "B<openat>() wurde zu Linux in Kernel 2.6.16 hinzugefügt; " "Bibliotheksunterstützung wurde zu Glibc in Version 2.4 hinzugefügt." #. type: SH #, no-wrap msgid "CONFORMING TO" msgstr "KONFORM ZU" #. type: Plain text msgid "B<open>(), B<creat>() SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008." msgstr "B<open>(), B<creat>() SVr4, 4.3BSD, POSIX.1-2001, POSIX.1-2008." #. type: Plain text msgid "B<openat>(): POSIX.1-2008." msgstr "B<openat>(): POSIX.1-2008." #. type: Plain text msgid "" "The B<O_DIRECT>, B<O_NOATIME>, B<O_PATH>, and B<O_TMPFILE> flags are Linux-" "specific. One must define B<_GNU_SOURCE> to obtain their definitions." msgstr "" "Die Schalter B<O_DIRECT>, B<O_NOATIME>, B<O_PATH> und B<O_TMPFILE> sind " "Linux-spezifisch. Sie müssen B<_GNU_SOURCE> definieren, um ihre Definitionen " "zu erhalten." #. type: Plain text msgid "" "The B<O_CLOEXEC>, B<O_DIRECTORY>, and B<O_NOFOLLOW> flags are not specified " "in POSIX.1-2001, but are specified in POSIX.1-2008. Since glibc 2.12, one " "can obtain their definitions by defining either B<_POSIX_C_SOURCE> with a " "value greater than or equal to 200809L or B<_XOPEN_SOURCE> with a value " "greater than or equal to 700. In glibc 2.11 and earlier, one obtains the " "definitions by defining B<_GNU_SOURCE>." msgstr "" "Die Schalter B<O_CLOEXEC>, B<O_DIRECTORY> und B<O_NOFOLLOW> sind nicht in " "POSIX.1-2001 sondern in POSIX.1-2008 spezifiziert. Seit Glibc 2.12 kann ihre " "Definition erhalten werden, indem entweder B<_POSIX_C_SOURCE> mit einem Wert " "größer als oder identisch zu 200809L definiert wird oder durch " "B<_XOPEN_SOURCE> mit einem Wert größer als oder identisch zu 700. In Glibc " "2.11 und älter kann die Definition über die Definition von B<_GNU_SOURCE> " "erhalten werden." #. type: Plain text msgid "" "As noted in B<feature_test_macros>(7), feature test macros such as " "B<_POSIX_C_SOURCE>, B<_XOPEN_SOURCE>, and B<_GNU_SOURCE> must be defined " "before including I<any> header files." msgstr "" "Wie in B<feature_test_macros>(7) angemerkt, müssen Feature-Test-Makros wie " "B<_POSIX_C_SOURCE>, B<_XOPEN_SOURCE> und B<_GNU_SOURCE> definiert werden, " "bevor I<irgendeine> Header-Datei mit »include« verwandt wird." #. type: SH #, no-wrap msgid "NOTES" msgstr "ANMERKUNGEN" #. type: Plain text msgid "" "Under Linux, the B<O_NONBLOCK> flag indicates that one wants to open but " "does not necessarily have the intention to read or write. This is typically " "used to open devices in order to get a file descriptor for use with " "B<ioctl>(2)." msgstr "" "Unter Linux gibt der Schalter B<O_NONBLOCK> an, dass die Datei geöffnet " "werden soll, ohne aber notwendigerweise zu lesen oder zu schreiben. Dies " "wird typischerweise zum Öffnen von Geräten verwandt, um den Datei-Deskriptor " "für B<ioctl>(2) zu erhalten." #. Linux 2.0, 2.5: truncate #. Solaris 5.7, 5.8: truncate #. Irix 6.5: truncate #. Tru64 5.1B: truncate #. HP-UX 11.22: truncate #. FreeBSD 4.7: truncate #. type: Plain text msgid "" "The (undefined) effect of B<O_RDONLY | O_TRUNC> varies among " "implementations. On many systems the file is actually truncated." msgstr "" "Der (undefinierte) Effekt von B<O_RDONLY | O_TRUNC> unterscheidet sich in " "vielen Implementierungen. Auf vielen Systemen wird die Datei tatsächlich " "abgeschnitten." #. type: Plain text msgid "" "Note that B<open>() can open device special files, but B<creat>() cannot " "create them; use B<mknod>(2) instead." msgstr "" "Beachten Sie, dass B<open>() Spezial-Gerätedateien öffnen kann, aber " "B<creat>() sie nicht erstellen kann. Verwenden Sie stattdessen B<mknod>(2)." #. type: Plain text msgid "" "If the file is newly created, its I<st_atime>, I<st_ctime>, I<st_mtime> " "fields (respectively, time of last access, time of last status change, and " "time of last modification; see B<stat>(2)) are set to the current time, and " "so are the I<st_ctime> and I<st_mtime> fields of the parent directory. " "Otherwise, if the file is modified because of the B<O_TRUNC> flag, its " "I<st_ctime> and I<st_mtime> fields are set to the current time." msgstr "" "Falls die Datei neu erstellt wurde, werden ihre Felder I<st_atime>, " "I<st_ctime>, I<st_mtime> (Zeit des letzten Zugriffs, Zeit der letzten " "Statusänderung und Zeit der letzten Änderung, siehe B<stat>(2)) auf die " "aktuelle Zeit gesetzt und ebenso die Felder I<st_ctime> und I<st_mtime> des " "Elternverzeichnisses. Andernfalls, falls die Datei aufgrund des Schalters " "B<O_TRUNC> geändert wurde, werden ihre Felder I<st_ctime> und I<st_mtime> " "auf die aktuelle Zeit gesetzt." #. type: Plain text msgid "" "The files in the I</proc/[pid]/fd> directory show the open file descriptors " "of the process with the PID I<pid>. The files in the I</proc/[pid]/fdinfo> " "directory show even more information about these files descriptors. See " "B<proc>(5) for further details of both of these directories." msgstr "" "Die Dateien im Verzeichnis I</proc/[PID]/fd> zeigen die offenen " "Dateideskriptoren des Prozesses mit der PID I<PID>. Die Dateien im " "Verzeichnis I</proc/[PID]/fdinfo> zeigen noch mehr Informationen über diese " "Dateideskriptoren. Siehe B<proc>(5) für weitere Details über beide " "Verzeichnisse." #. type: SS #, no-wrap msgid "Open file descriptions" msgstr "Offene Dateideskriptionen:" #. type: Plain text msgid "" "The term open file description is the one used by POSIX to refer to the " "entries in the system-wide table of open files. In other contexts, this " "object is variously also called an \"open file object\", a \"file handle\", " "an \"open file table entry\", or\\(emin kernel-developer parlance\\(ema " "I<struct file>." msgstr "" "Der Begriff offene Dateideskription wird von POSIX verwandt, um sich auf " "Einträge in der systemweiten Tabelle der offenen Dateien zu beziehen. In " "anderen Zusammenhängen wird dieses Objekt verschieden auch »offenes " "Dateiobjekt«, »Datei-Handle«, »offener Dateitabelleneintrag« oder \\(em in " "der Sprache der Kernel-Entwickler \\(em I<struct file> genannt." #. type: Plain text msgid "" "When a file descriptor is duplicated (using B<dup>(2) or similar), the " "duplicate refers to the same open file description as the original file " "descriptor, and the two file descriptors consequently share the file offset " "and file status flags. Such sharing can also occur between processes: a " "child process created via B<fork>(2) inherits duplicates of its parent's " "file descriptors, and those duplicates refer to the same open file " "descriptions." msgstr "" "Wenn ein Dateideskriptor (mit B<dup>(2) oder ähnlichem) dupliziert wird, " "bezieht sich das Duplikat auf die gleiche offene Dateideskription wie der " "ursprüngliche Datedeskriptor und die zwei Dateideskriptoren haben " "konsequenterweise den gleichen Dateiversatz und die gleichen " "Dateistatusschalter. Solch ein gemeinsamer Satz kann auch zwischen Prozessen " "auftreten: ein mit B<fork>(2) erstellter Kindprozess erbt Duplikate der " "Dateideskriptoren seines Elternprozesses und diese Duplikate beziehen sich " "auf die gleichen offenen Datei-Deskriptoren." #. type: Plain text msgid "" "Each B<open>() of a file creates a new open file description; thus, there " "may be multiple open file descriptions corresponding to a file inode." msgstr "" "Jedes B<open>() einer Datei erstellt eine neue offene Dateideskription; " "daher kann es mehrere offene Dateideskriptionen geben, die einem Datei-Inode " "entsprechen." #. type: Plain text msgid "" "On Linux, one can use the B<kcmp>(2) B<KCMP_FILE> operation to test whether " "two file descriptors (in the same process or in two different processes) " "refer to the same open file description." msgstr "" "Unter Linux kann die Aktion B<KCMP_FILE> von B<kcmp>(2) zum Testen, ob sich " "zwei Dateideskriptoren (in dem gleichen Prozess oder in zwei verschiedenen " "Prozessen) auf die gleiche offene Datei-Deskription beziehen, verwandt " "werden." #. type: SS #, no-wrap msgid "Synchronized I/O" msgstr "Synchronisierte E/A" #. type: Plain text msgid "" "The POSIX.1-2008 \"synchronized I/O\" option specifies different variants of " "synchronized I/O, and specifies the B<open>() flags B<O_SYNC>, B<O_DSYNC>, " "and B<O_RSYNC> for controlling the behavior. Regardless of whether an " "implementation supports this option, it must at least support the use of " "B<O_SYNC> for regular files." msgstr "" "Die Option »synchronisierte E/A« von POSIX.1-2008 spezifiziert verschiedene " "Varianten der synchronisierten E/A und spezifiziert Schalter B<O_SYNC>, " "B<O_DSYNC> und B<O_RSYNC> von B<open>() für die Steuerung des Verhaltens. " "Unabhängig davon, ob eine Implementierung diese Option unterstützt muss sie " "mindestens die Verwendung von B<O_SYNC> für reguläre Dateien unterstützen." #. type: Plain text msgid "" "Linux implements B<O_SYNC> and B<O_DSYNC>, but not B<O_RSYNC>. (Somewhat " "incorrectly, glibc defines B<O_RSYNC> to have the same value as B<O_SYNC>.)" msgstr "" "Linux implementiert B<O_SYNC> und B<O_DSYNC>, aber nicht B<O_RSYNC>. (Etwas " "inkorrekt definiert Glibc B<O_RSYNC> auf den gleichen Wert wie B<O_SYNC>.)" #. type: Plain text msgid "" "B<O_SYNC> provides synchronized I/O I<file> integrity completion, meaning " "write operations will flush data and all associated metadata to the " "underlying hardware. B<O_DSYNC> provides synchronized I/O I<data> integrity " "completion, meaning write operations will flush data to the underlying " "hardware, but will only flush metadata updates that are required to allow a " "subsequent read operation to complete successfully. Data integrity " "completion can reduce the number of disk operations that are required for " "applications that don't need the guarantees of file integrity completion." msgstr "" "B<O_SYNC> stellt synchronisierte E/A-I<Datei>-Integritätsvervollständigung bereit. " "Das bedeutet, Schreibaktionen schieben ihre Daten und zugehörigen Metadaten " "an die darunterliegende Hardware. B<O_DSYNC> stellt synchronisierte E/A-" "I<Daten>-Integritätsvervollständigung bereit. Das bedeutet, Schreibaktionen schieben " "ihre Daten an die darunterliegende Hardware, aber schieben nur " "Metadatenaktualisierungen, die benötigt werden, um folgende Leseaktionen " "erfolgreich abzuschließen. Datenintegritätsvervollständigung kann die Anzahl der " "Aktionen reduzieren, die für Anwendungen notwendig werden, die keine " "Garantien für die Dateiintegritätsvervollständigung benötigen." #. type: Plain text msgid "" "To understand the difference between the two types of completion, consider " "two pieces of file metadata: the file last modification timestamp " "(I<st_mtime>) and the file length. All write operations will update the " "last file modification timestamp, but only writes that add data to the end " "of the file will change the file length. The last modification timestamp is " "not needed to ensure that a read completes successfully, but the file length " "is. Thus, B<O_DSYNC> would only guarantee to flush updates to the file " "length metadata (whereas B<O_SYNC> would also always flush the last " "modification timestamp metadata)." msgstr "" "Um den Unterschied zwischen den zwei Arten von Vervollständigung zu verstehen, " "betrachen Sie zwei verschiedene Dateimetadaten: der Zeitstempel der letzten " "Änderung (I<st_mtime>) und die Dateilänge. Alle Schreibaktionen " "aktualisieren den Zeitstempel der letzten Dateiänderung, aber nur " "Schreibaktionen, die Daten am Ende der Datei hinzufügen, müssen die " "Dateilänge ändern. Der Zeitstempel der letzten Änderung wird nicht benötigt, " "um sicherzustellen, dass eine Leseaktion erfolgreich abgeschlossen werden " "kann, aber die Dateilänge wird dafür benötigt. Daher würde B<O_DSYNC> nur " "garantieren, dass Aktualisierungen der Dateilängen-Metadaten rausgeschoben " "werden (während B<O_SYNC> immer auch das Metadatum des Zeitstempel der " "letzten Änderung rausschieben würde)." #. type: Plain text msgid "" "Before Linux 2.6.33, Linux implemented only the B<O_SYNC> flag for " "B<open>(). However, when that flag was specified, most filesystems actually " "provided the equivalent of synchronized I/O I<data> integrity completion (i." "e., B<O_SYNC> was actually implemented as the equivalent of B<O_DSYNC>)." msgstr "" "Vor Linux 2.6.33 implementierte Linux nur den Schalter B<O_SYNC> für " "B<open>(). Als dieser Schalter spezifiziert wurde, stellten die meisten " "Dateisysteme das Äquivalent von synchronisierter E/A I<Daten>-" "Integritätsvervollständigung bereit (d.h. B<O_SYNC> war tatsächlich als " "Äquivalent von B<O_DSYNC> implementiert)." #. type: Plain text msgid "" "Since Linux 2.6.33, proper B<O_SYNC> support is provided. However, to " "ensure backward binary compatibility, B<O_DSYNC> was defined with the same " "value as the historical B<O_SYNC>, and B<O_SYNC> was defined as a new (two-" "bit) flag value that includes the B<O_DSYNC> flag value. This ensures that " "applications compiled against new headers get at least B<O_DSYNC> semantics " "on pre-2.6.33 kernels." msgstr "" "Seit Linux 2.6.33 wird korrekte Unterstützung für B<O_SYNC> bereitgestellt. " "Um Rückwärtskompatibilität sicherzustellen wurde aber B<O_DSYNC> mit dem " "gleichen Wert wie das historische B<O_SYNC> definiert und B<O_SYNC> wurde " "als neuer (Zweibit-)Schalterwert definiert, der den Wert des Schalters " "B<O_DSYNC> enthält. Das stellt sicher, dass Anwendungen, die gegen neue " "Header übersetzt wurden, mindestens die Semantik von B<O_DSYNC> auf " "pre-2.6.33-Kerneln erhalten." #. type: SS #, no-wrap msgid "NFS" msgstr "NFS" #. type: Plain text msgid "" "There are many infelicities in the protocol underlying NFS, affecting " "amongst others B<O_SYNC> and B<O_NDELAY>." msgstr "" "Es gibt mehrere Unglücklichkeiten im Protokoll, das NFS unterliegt, die " "unter anderem B<O_SYNC> und B<O_NDELAY> betreffen." #. type: Plain text msgid "" "On NFS filesystems with UID mapping enabled, B<open>() may return a file " "descriptor but, for example, B<read>(2) requests are denied with " "B<EACCES>. This is because the client performs B<open>() by checking the " "permissions, but UID mapping is performed by the server upon read and write " "requests." msgstr "" "Auf NFS-Dateisystemen mit aktivierter UID-Abbildung könnte B<open>() einen " "Dateideskriptor zurückliefern, aber B<read>(2)-Anfragen werden " "beispielsweise mit B<EACCES> verweigert. Dies erfolgt, da der Client " "B<open>() durchführt, indem er die Rechte prüft, aber die UID-Abbildung auf " "dem Server bei Lese- und Schreibanfragen erfolgt." #. type: SS #, no-wrap msgid "FIFOs" msgstr "FIFOs" #. type: Plain text msgid "" "Opening the read or write end of a FIFO blocks until the other end is also " "opened (by another process or thread). See B<fifo>(7) for further details." msgstr "" "Öffnen des Lese- oder Schreibenendes eines FIFOS blockiert, bis das andere " "Ende auch geöffnet wurde (durch einen anderen Prozess oder Thread). Siehe " "B<fifo>(7) für weitere Details." #. type: SS #, no-wrap msgid "File access mode" msgstr "Dateizugriffsmodus" #. type: Plain text msgid "" "Unlike the other values that can be specified in I<flags>, the I<access " "mode> values B<O_RDONLY>, B<O_WRONLY>, and B<O_RDWR> do not specify " "individual bits. Rather, they define the low order two bits of I<flags>, " "and are defined respectively as 0, 1, and 2. In other words, the " "combination B<O_RDONLY | O_WRONLY> is a logical error, and certainly does " "not have the same meaning as B<O_RDWR>." msgstr "" "Anders als andere Werte, die in I<flags> festgelegt werden können, legen die " "I<Zugriffsmodus>-Werte B<O_RDONLY>, B<O_WRONLY> und B<O_RDWR> nicht " "individuelle Bits fest. Stattdessen definieren sie die untersten zwei Bits " "von I<flags> und sind respektive als 0, 1 und 2 definiert. Mit anderen " "Worten, die Kombination B<O_RDONLY | O_WRONLY> ist ein logischer Fehler und " "hat bestimmt nicht die gleiche Bedeutung wie B<O_RDWR>." #. See for example util-linux's disk-utils/setfdprm.c #. For some background on access mode 3, see #. http://thread.gmane.org/gmane.linux.kernel/653123 #. "[RFC] correct flags to f_mode conversion in __dentry_open" #. LKML, 12 Mar 2008 #. type: Plain text msgid "" "Linux reserves the special, nonstandard access mode 3 (binary 11) in " "I<flags> to mean: check for read and write permission on the file and return " "a file descriptor that can't be used for reading or writing. This " "nonstandard access mode is used by some Linux drivers to return a file " "descriptor that is to be used only for device-specific B<ioctl>(2) " "operations." msgstr "" "Linux reserviert den besonderen, nicht standardisierten Zugriffsmodus 3 " "(binär 11) in I<flags> für folgendes: Prüfe auf Lese- und " "Schreibberechtigung der Datei und liefere einen Dateideskriptor zurück, der " "weder zum Lesen noch zum Schreiben verwandt werden kann. Dieser nicht " "standardisierte Zugriffsmodus wird von einigen Linux-Treibern verwandt, um " "einen Dateideskriptor zurückzuliefern, der nur für gerätespezifische " "B<ioctl>(2)-Aktionen benutzt werden kann." #. type: SS #, no-wrap msgid "Rationale for openat() and other directory file descriptor APIs" msgstr "Begründung für openat()- und andere Verzeichnis-Dateideskriptor APIs" #. type: Plain text msgid "" "B<openat>() and the other system calls and library functions that take a " "directory file descriptor argument (i.e., B<execveat>(2), B<faccessat>(2), " "B<fanotify_mark>(2), B<fchmodat>(2), B<fchownat>(2), B<fstatat>(2), " "B<futimesat>(2), B<linkat>(2), B<mkdirat>(2), B<mknodat>(2), " "B<name_to_handle_at>(2), B<readlinkat>(2), B<renameat>(2), B<symlinkat>(2), " "B<unlinkat>(2), B<utimensat>(2), B<mkfifoat>(3), and B<scandirat>(3)) are " "supported for two reasons. Here, the explanation is in terms of the " "B<openat>() call, but the rationale is analogous for the other interfaces." msgstr "" "B<openat>() und andere Systemaufrufe und Bibliotheksfunktionen, die ein " "Verzeichnis-Dateideskriptor als Argument akzeptieren (d.h. B<execveat>(2), " "B<faccessat>(2), B<fanotify_mark>(2), B<fchmodat>(2), B<fchownat>(2), " "B<fstatat>(2), B<futimesat>(2), B<linkat>(2), B<mkdirat>(2), B<mknodat>(2), " "B<name_to_handle_at>(2), B<readlinkat>(2), B<renameat>(2), B<symlinkat>(2), " "B<unlinkat>(2), B<utimensat>(2), B<mkfifoat>(3) und B<scandirat>(3)) werden " "aus zwei Gründen unterstützt. Hier erfolgt die Erläuterung am B<openat>()-" "Aufruf, aber der Grund ist analog für die anderen Schnittstellen." #. type: Plain text msgid "" "First, B<openat>() allows an application to avoid race conditions that " "could occur when using B<open>() to open files in directories other than " "the current working directory. These race conditions result from the fact " "that some component of the directory prefix given to B<open>() could be " "changed in parallel with the call to B<open>(). Suppose, for example, that " "we wish to create the file I<path/to/xxx.dep> if the file I<path/to/xxx> " "exists. The problem is that between the existence check and the file " "creation step, I<path> or I<to> (which might be symbolic links) could be " "modified to point to a different location. Such races can be avoided by " "opening a file descriptor for the target directory, and then specifying that " "file descriptor as the I<dirfd> argument of (say) B<fstatat>(2) and " "B<openat>()." msgstr "" "Erstens erlaubt B<openat>() es Anwendungen, Race-Conditions zu vermeiden, " "die bei der Verwendung von B<open>() auftreten können, wenn Dateien geöffnet " "werden, die sich nicht im lokalen Verzeichnis befinden. Diese Race-" "Conditions entstammen der Tatsache, dass einige Komponenten des " "Verzeichnispräfixes, der an B<open>() übergeben wird, parallel zum Aufruf " "von B<open>() geändert werden können. Nehmen Sie beispielsweise an, dass Sie " "die Datei I<pfad/zu/xxx.dep> öffnen möchten, falls I<pfad/zu/xxx> existiert. " "Das Problem besteht darin, das sich zwischen der Existenzüberprüfung und dem " "Schritt der Dateierstellung I<pfad> oder I<zu> (die symbolischen Links sein " "können) geändert haben und auf einen anderen Ort zeigen können. Solche " "Ressourcenwettläufe können vermieden werden, indem ein Dateideskriptor für " "das Zielverzeichnis geöffnet wird und dann dieser Dateideskriptor als " "Argument I<dirfd> von (beispielsweise) B<fstatat>(2) und B<openat>() " "verwandt wird." #. type: Plain text msgid "" "Second, B<openat>() allows the implementation of a per-thread \"current " "working directory\", via file descriptor(s) maintained by the application. " "(This functionality can also be obtained by tricks based on the use of I</" "proc/self/fd/>dirfd, but less efficiently.)" msgstr "" "Zweitens erlaubt B<openat>() die Implementierung eines pro-" "Thread-»Arbeitsverzeichnisses«, mittels von der Anwendung verwalteten Datei-" "Deskriptor(en). (Diese Funktionalität kann weniger effizient auch mittels " "Tricks basierend auf der Verwendung von I</proc/self/fd/>dirfd erreicht " "werden.)" #. type: SS #, no-wrap msgid "O_DIRECT" msgstr "O_DIRECT" #. type: Plain text msgid "" "The B<O_DIRECT> flag may impose alignment restrictions on the length and " "address of user-space buffers and the file offset of I/Os. In Linux " "alignment restrictions vary by filesystem and kernel version and might be " "absent entirely. However there is currently no filesystem-independent " "interface for an application to discover these restrictions for a given file " "or filesystem. Some filesystems provide their own interfaces for doing so, " "for example the B<XFS_IOC_DIOINFO> operation in B<xfsctl>(3)." msgstr "" #. type: Plain text msgid "" "Under Linux 2.4, transfer sizes, and the alignment of the user buffer and " "the file offset must all be multiples of the logical block size of the " "filesystem. Since Linux 2.6.0, alignment to the logical block size of the " "underlying storage (typically 512 bytes) suffices. The logical block size " "can be determined using the B<ioctl>(2) B<BLKSSZGET> operation or from the " "shell using the command:" msgstr "" #. type: Plain text #, no-wrap msgid " blockdev --getss\n" msgstr " blockdev --getss\n" #. type: Plain text msgid "" "B<O_DIRECT> I/Os should never be run concurrently with the B<fork>(2) " "system call, if the memory buffer is a private mapping (i.e., any mapping " "created with the B<mmap>(2) B<MAP_PRIVATE> flag; this includes memory " "allocated on the heap and statically allocated buffers). Any such I/Os, " "whether submitted via an asynchronous I/O interface or from another thread " "in the process, should be completed before B<fork>(2) is called. Failure " "to do so can result in data corruption and undefined behavior in parent and " "child processes. This restriction does not apply when the memory buffer for " "the B<O_DIRECT> I/Os was created using B<shmat>(2) or B<mmap>(2) with the " "B<MAP_SHARED> flag. Nor does this restriction apply when the memory buffer " "has been advised as B<MADV_DONTFORK> with B<madvise>(2), ensuring that it " "will not be available to the child after B<fork>(2)." msgstr ""
signature.asc
Description: Digital signature