2013-07-23 7 views
1

리눅스 시스템 (arm7)에서 내 프로젝트 중 하나에서 JNotify를 사용하고 있습니다. 그리고 잘 작동합니다. 내가 변경, 이름 바꾸기, 삭제 또는 파일을 만들면 인터럽트가 발생합니다. 그러나 Linux 시스템이 File을 단독으로 변경하는 경우 정보를 얻으려면 JNotify에 알려주십시오. BeagleBone (임베디드 Linux 시스템)을 사용하고 있습니다. InputPin (high, low) 상태를 포함하는 value라는 파일이 있습니다. 하지만이 파일이 시스템에 의해 변경되면 JNotify dosen't 작업 ... 내가 내 자체로 파일을 변경하면 모든 것이 정상입니다 ... 변경 사항이 첫 번째 경우에 인식되지 않는 이유를 아는 사람이 있습니까? 리눅스는 파일을 쓰는 특별한 방법을 사용하는 것 같습니다 ... 아직 어떻게 해야할지 모르겠군요 ... 하지만이 파일이 변경되면 메인 루프를 중단해야합니다. 다른 해결책이 있습니까?리눅스 시스템에서 변경된 파일을 인식하지 못함

감사합니다.

답변

0

JNotify는 파일 시스템의 이벤트를 사용합니다. Linux의 경우 inotify 시스템 호출을 사용합니다 (실제로 이름에 영향을 준 것입니다). inotify는 실제 파일에 대해서만 작동합니다. 설명하는 파일은 디스크에 없으며 정보를 저장하는 방법이 아니라 시스템 정보에 액세스하고 때로는 쉽게 변경할 수있는 가상 파일입니다.

대체 솔루션은 파일을 확인하고 절전 모드로 전환 한 다음 파일을 다시 검사 할 샘플링 스레드를 만드는 것입니다. 특정 파일에만 관심이 있으므로 매우 쉽습니다.

너무 비싸지 만 하드웨어를 직접 사용할 때는 폴링이 실제로 매우 일반적입니다. 그 파일은 사실 실제로 파일이 아니기 때문에 파일을 읽는 것보다 실제로 읽는 것이 더 빠릅니다.

관련 문제