기본 콘텐츠로 건너뛰기

Linux에서 파일변경 알아내기

파일 변경을 알아내는 방법은 여러가지가 있다. 그중에 제일 생각하기 쉬운게 루프를 돌면서 짧은 시간에 한 번 씩 계속 검사하는 것이다.

...
while ( true )
{
lstat("myfile", &stat);
sleep(1);
}
...

그러나 뭔가 아름답지가 않다. 매번 파일을 검사하는 것도 후루꾸레머프로그래머 양심이 허락하지 않는다. 변경 했을 경우에만 이벤트가 날아왔으면 좋겠고, 그것을 받을 수 있는 방법에는 여러가지가 있다.

방법도 많은데, D-Bus+HAL은 나중에 따로 포스팅 하겠다. FAM은 SGI에서 만든 라이브러리인데, OS와 상관 없이 동일한 API를 제공해준다는 점이 매우 매력적이긴 하지만, D-Bus+HAL을 더 많이 쓰니, 가벼운 마음으로 넘어가자.

inotify는 리눅스에서만 제공하는 API로 dnotify 대체 버전이다. dnotify는 파일 변경 이벤트를 시그널로 받지만, inotify는 select/epoll 같은 멀티플렉서로부터 이벤트를 감지해낼 수 있다. 그외에도 히스토리나 장점은 위키백과(http://ko.wikipedia.org/wiki/Inotify)를 참조하자.

사실 inotify에 대해 자세히 서술하고 싶지만, 이미 IBM에서 더 이상 깔끔하게 설명할 수 없을 정도로 잘 써놓은 문서가 있어 굳이 다시 적지는 않겠다.

이 문서는 D-Bus+HAL에 대한 예고와 inotify라는 존재만 기록에 남기기 위한 것이다. (응?)

댓글

이 블로그의 인기 게시물

Winget 해시 무시하기

가끔씩 Winget 에서 패키지를 다운로드 했을 때, "설치 관리자 해시가 일치하지 않습니다." 오류가 뜰 때가 있다. 보안 이슈가 있지만, 그냥 무시하고 싶을 때, 아래 순서로 무시해준다. 관리자 권한 winget settings --enable InstallerHashOverride 설치 winget install --ignore-security-hash --id NirSoft.NirCmd

Windows 11 기존 컨텍스트 메뉴 사용

Windows 11 에서, 컨텍스트 메뉴가 지저분한게 싫었는지, 모던 컨텍스트 메뉴라고 따로 필요한 것만 정리해서 보여준다. 그러나 이게 좀 불편하고, 기존의 꼭 필요한 메뉴가 보이지 않아 굳이 한 번 더 기존 메뉴를 불러오는데, 모든 앱들이 모던 컨텍스트 메뉴로 옮길 때까지는 기존 컨텍스트 메뉴를 기본으로 볼 수 있는 방법이 있다. REM 관리자 권한 REM 기존 컨텍스트 메뉴 reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32" /f /ve REM 모던 컨텍스트 메뉴로 되돌리기 reg.exe delete "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" /f 이거 하고 탐색기를 재시작한다. 참조:  Restore old Right-click Context menu in Windows 11