2009-12-22 3 views
1

저는 Srinivasa Raghavan이고이 그룹에 처음 있습니다.mac에서 F_NOCACHE와 (과) 함께 도움이 필요합니다.

파일을 캐싱하지 않는 문제가 있습니다. 코드는 다음과 같습니다

문제가 있었다
main() 
{ 
    int fd; 
    char buf[512] = {'\0'}; 
    fd = fopen("Sample.bin",O_RDONLY); 

    fcntl(fd, F_NOCACHE, 1); 
    fcntl(fd, F_RDAHEAD, 1); 

    read(fd, buf, sizeof(buf)); 
    close(fd); 

    if(buf[0] == 'x') 
     print("non-cached\n"); 
    else 
     printf("cached\n") 
} 

의 F_NOCACHE이 제대로 작동하지 않고, 나는이 메시지가 모든 시간 만 캐시. firware는 항상 sample.bin에서 'x'값을 업데이트합니다.

아래 코드와 같이 전체 내용 (open, fcntl, read 및 close)을 무한 루프에 넣으면 (위와 같이 오랜 시간이 걸립니다) 위 코드가 작동합니다. 정말 일주일 동안이 붙어 있어요

main() 
{ 
    while(1) 
    { 
     open... 
     fcntl(.., F_NOCACHE) 
     read(.... 
     close.. 

     if(buf[0] == 'x') 
      break; 
    } 
} 

, 나는 F_NOCACHE의 정확한 동작을 알고 싶어하고, 어떤 정보가 높게 평가 될 것입니다. 사전에

감사합니다, 바사 라 하반 그것을 위해 무엇 아니다

답변

5

. F_NOCACHE는 시스템에 사용자가 언제든지 디스크에서 해당 데이터를 읽을 것을 기대하지 않는다고 말하므로 캐싱을 방해해서는 안됩니다.

* 예, "데이터"는 복수형입니다.

관련 문제