파일을 가지고 동적으로 처리하는 프로그램을 만들고 있는데, 외부(애플리케이션이 아닌 다른 것을 통해서)에서 파일에 변화를 주면 그것도 애플리케이션 내에서 반영을 해야하거든요. 파일이 변하면 바로 알 수 있도록 하려면 어찌해야할까요?
세상이 참 좁네요..
안녕하세요 멘티님.ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
http://www.codeproject.com/KB/files/directorychangewatcher.aspx
을 참고하시면 좋을것 같은데 제가 주로 쓰는 방법은 쓰레드 하나 생성해놓고 해당 파일의 수정시간을 계속 감시하면서 수정여부를 알아내는 방법이에요..
전 누굴까요~
뻘짓도 일이다.
아 수정시각을 확인하는 방법이 있었군요, 조성수 멘티님! ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 감사합니다~
김 현준(hyunjun.kr)
man inotify
inotify 하면 create / modify / delete 가 다 날라옵니다. posix 에 따르면 (일부 unix/linux 에서는) file move 도 날아오기도 하고요 그대신 inotify 하면 너무 많이 날라옵니다. 특히 vi 수정한번 하면 tmp 파일 create 부터 시작해서 modify 수십개 날라와서 정신없음 그리고 fd 수 제한 있는 걸로 압니다 (root 부터 해봤는데 몇 개 안되더군요..)
----- 안녕하세요 소프트웨어 공학센터 장원석 책임입니다.http://www.software.kr
event mask 는 미리 줄 수도 있고, event 받은 뒤에 filter 할 수도 있습니다.
[bushi@rose t2]$ sudo sysctl -a|grep inoti fs.inotify.max_user_instances = 128 fs.inotify.max_user_watches = 8192 fs.inotify.max_queued_events = 16384 [bushi@rose t2]$
OTL
로그처럼 파일에 추가가 되는 형태라면 select()를 쓰셔도 됩니다.
------식은이 처------ 길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
inotify 를 직접 이용하시는 게 번거로우시면 inotify 를 사용하는 이벤트 라이브러리 같은 걸 써서 간단하게 짜 볼 수 있습니다. 루비의 경우 eventmachine 을 이용하면..
require 'rubygems' require 'eventmachine' module Handler def file_modified puts 'modified' end def file_moved puts 'moved' end def file_deleted puts 'deleted' end end EM.run { EM.epoll EM.watch_file("test", Handler) }
이렇게 하시면 test 라는 파일이 바뀔 때마다 modified 를 출력합니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
오호?
세상이 참 좁네요..
안녕하세요 멘티님.ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
http://www.codeproject.com/KB/files/directorychangewatcher.aspx
을 참고하시면 좋을것 같은데
제가 주로 쓰는 방법은 쓰레드 하나 생성해놓고 해당 파일의 수정시간을 계속 감시하면서 수정여부를 알아내는 방법이에요..
전 누굴까요~
뻘짓도 일이다.
아 수정시각을
아 수정시각을 확인하는 방법이 있었군요, 조성수 멘티님!
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
감사합니다~
김 현준(hyunjun.kr)
김 현준(hyunjun.kr)
inotify 는 어떨까요
man inotify
복잡할지도
inotify 하면 create / modify / delete 가 다 날라옵니다.
posix 에 따르면 (일부 unix/linux 에서는) file move 도 날아오기도 하고요
그대신 inotify 하면 너무 많이 날라옵니다. 특히 vi 수정한번 하면 tmp 파일 create 부터 시작해서 modify 수십개 날라와서 정신없음 그리고 fd 수 제한 있는 걸로 압니다 (root 부터 해봤는데 몇 개 안되더군요..)
-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr
event mask 는 미리 줄
event mask 는 미리 줄 수도 있고, event 받은 뒤에 filter 할 수도 있습니다.
OTL
로그처럼 파일에
로그처럼 파일에 추가가 되는 형태라면 select()를 쓰셔도 됩니다.
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
inotify 를 직접
inotify 를 직접 이용하시는 게 번거로우시면 inotify 를 사용하는 이벤트 라이브러리 같은 걸 써서 간단하게 짜 볼 수 있습니다. 루비의 경우 eventmachine 을 이용하면..
이렇게 하시면 test 라는 파일이 바뀔 때마다 modified 를 출력합니다.
댓글 달기