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

[RFR] man://manpages-de/man2/open.2.po (Teil 4)



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                     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<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 ""

Attachment: signature.asc
Description: Digital signature


Reply to: