리눅스에서 LFS(Large File Support) 를 구현하는 방법은 두가지가 있습니다.
1) 32bit 와 64bit 파일관련 함수를 나눠서 쓰는 경우

#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE

위의 두가지를 define 해주고 사용합니다. 그러면 open(), read(), write() ... 는 32bit 함수로
open64(), read64(), write64() ... 는 64bit 함수로 사용됩니다.
64bit 함수들은 64bit 형식의 off64_t 형을 오프셋으로 사용합니다.
그리고 64bit 형의 파일 탐색은 ftello(), fseeko() 함수를 대신 사용합니다.

ps : off_t -> of64_t

open() -> opne64() .....

2) 기존의 32bit 함수를 모두 64bit 로 전환
#define _LARGEFILE_SOURCE
#define _FILE_OFFSET_BITS 64

위의 두가지를 define 하면 open(), read(), write() 등이 모두 64bit 형으로 작동합니다.
따라서 off_t 를 사용해도 자동적으로 off64_t 로 전환됩니다.
마찬가지로 64bit 형의 파일 탐색은 ftello(), fseeko() 함수를 사용합니다.


http://www.suse.de/~aj/linux_lfs.html

'Linux > C/C++' 카테고리의 다른 글

variable length array  (0) 2012.07.16
nslookup -> getaddrinfo 사용 사례  (0) 2012.07.16
C 언어 레퍼런스 - setvbuf 함수  (0) 2012.07.11
recvmsg sendmsg example from italy  (0) 2012.07.11
Socket Programming (sendmsg(), recvmsg() example)  (0) 2012.07.11