lseek 에 관한 질문입니다.
글쓴이: a287848 / 작성시간: 화, 2005/07/05 - 11:54오후
하드디스크의 bad block 관리를 직업 하고싶어서
open() 으로 device (/dev/hdb) 를 연다름
lseek 와 read 로 파티션을 처음 부터 끝까지 검색하면서
배드 블럭이 있는지를 검사하는 툴을 제작중입니다.
작은 파티션은 문제가 아니였는데
오늘 120기가 짜리 하드디스크로 하다보니
lseek 가 2147483648 byte(21억 bytes) 위치에서
잘못된 값(42억bytes)을 return 하네요
21억이 unsigned long 의 최대 값이라
lseek 가 64 를 지원해야 하는것 같습니다.
그래서 lseek64 로 해보았는데도 에러가 나네요
파라미터로 넘겨주는 값에는 문제는 없고요
답변을 기다려 봅니다. 항상 좋은 날만 있으시길 빕니다.^^
Forums:
#define _LARGEFILE64_SOURCE#define _FI
#define _LARGEFILE64_SOURCE
#define _FILE_OFFSET_BITS 64
혹시나 define은 해주셨나요.
Re: lseek 에 관한 질문입니다.
인자는 long long 으로 준거 맞는지요 =3=33
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
lseek64 문서를 보시고 혹시 open64() 가 있는지, open(
lseek64 문서를 보시고 혹시 open64() 가 있는지, open()을 사용할 때 LARGEFILE_xx 와 같은 flag가 있는지 알아보아야 할 것 같습니다.
----------------------------------------
http://moim.at
http://mkhq.co.kr
^^ 저랑 같은 문제를 풀고 계셨네요.. 윗분이 말씀하셨듯이 def
^^ 저랑 같은 문제를 풀고 계셨네요..
윗분이 말씀하셨듯이 define문을 추가도 해보고
여러 방법을 써보았는데.. 안되더라구요.. ^^ ;;
결론은 컴파일 옵션을 추가하는거였어여
-D_LARGEFILE64_SOURCE
-D_FILE_OFFSET_BITS=64
그리고 open 함수 flag에 O_LARGEFILE 을 추가하면 됩니다
참고>> http://www.suse.de/~aj/linux_lfs.html
근데.. 이 문제 해결 하셨으면 과연 속도는 얼마만큼 나오시나요 ?
ㅜㅜ
전 30 GB 에 2시간 걸리던데 .. 어디를 수정해야하나요 ?
도움말씀 부탁드려요 ~~~ ㅜㅜ
[quote] -D_LARGEFILE64_SOURCE-D_FILE
저의 경우는 옵션과 open 방법이 다른것 같습니다.
open은 O_RDWR 등의 flag만 사용하면되고, 최종 컴파일시에는
CFLAGS += -D_FILE_OFFSET_BITS=64 -D__USE_FILE_OFFSET64
컴파일시에 옵션을 추가하면 됩니다.
댓글 달기