Ist O_LARGEFILE brauchte nur zu schreiben, eine große Datei?
Ist die O_LARGEFILE
flag benötigt, wenn alle, die ich tun möchte ist schreiben einer großen Datei (O_WRONLY
) oder Anhängen einer großen Datei (O_APPEND | O_WRONLY
)?
Aus einem thread, die ich gelesen habe mit dem Titel "Schreiben kann >2gb index-Datei" auf der CLucene-dev mailing-Liste, es scheint, dass O_LARGEFILE
gebraucht werden könnte, zum schreiben von großen Dateien, aber die Teilnehmer in dieser Diskussion mit O_RDWR
, nicht O_WRONLY
, also bin ich nicht sicher.
Du musst angemeldet sein, um einen Kommentar abzugeben.
O_LARGEFILE
sollte niemals verwendet werden, die direkt von Anwendungen. Es werden intern durch die 64-bit-offset-kompatible version vonopen
in der libc, wenn es macht die syscall an den kernel (Linux, oder eventuell einen anderen kernel mit dieser 64-bit-offset-Modus-ist-eine-zweite-Klasse-Bürger-Quatsch). Stellen Sie sicher, dass Sie immer auch die-D_FILE_OFFSET_BITS=64
in IhremCFLAGS
- und Sie müssen nie sorgen zu machen über alles.open
verwendet mit-D_FILE_OFFSET_BITS=64
gehtO_LARGEFILE
zu den kernel-transparent. Die version mit 32-bit -off_t
nicht. Dies wiederum bestimmt, "der offset maximal errichtet in der Datei-öffnen-Beschreibung", in der Sprache der POSIX, wodurch eine Reihe von Funktionen, um Fehler zu melden, wenn Sie würde das Ergebnis in einer Datei offset, können nicht dargestellt werden in der 32-bit -off_t
. Das maximum ist im Zusammenhang mit der Datei-öffnen-Beschreibung eher als den Prozess, da die Datei-öffnen-Beschreibungen können geteilt werden zwischen den Prozessen.O_LARGEFILE
selbst. Wenn Sie 64-bit -off_t
auf einem 32-bit-system, wird es automatisch für Sie, und ansonsten (auf 64-bit-Systemen oder auf 32-bit Systemen mit 32-bit -off_t
), es sollte nicht festgelegt werden._FILE_OFFSET_BITS
? Kannst du ihn verlinken?IIRC wenn Sie
bevor alle anderen enthält, die Sie nicht brauchen, um passieren dieses flag.
zusätzlich finden Sie unter
_LARGEFILE_SOURCE
ist nicht erforderlich, nur_FILE_OFFSET_BITS
.