2011-10-05 2 views
1

libevent를 사용하여 파일 제거/업데이트를 모니터 할 수 있습니까?파일 삭제/수정 중 libevent

/var/log/file.1이 제거되었다고 가정하고 프로그램에서보고하고 싶습니다. 이것이 가능한가? 그렇다면 어떻게?

내 운영 체제가 Linux이고 일부 운영 체제 작업 중에 메시지를 발생시키는 악마를 만들고 싶습니다.

어디에서 자세한 정보를 찾을 수 있습니까?

+0

구조체 합계의 다른 요소를 확인하여 파일의 많은 속성을 확인할 수 있습니다. IIRC, 그들은'select (2)'를 사용합니다. – Aif

+0

이 inotify 솔루션을 받아 들였고, 제가 찾고있는 것에 아주 가깝게 보입니다. – cateof

답변

1

코드가 특히 Linux의 대상 인 경우 inotify(7) 기능을 대신 사용할 수 있습니다. 그것은 매우 간단한 프로그래밍 인터페이스를 가지고 있으며, 파일 변경과 삭제를 모니터하기위한 것이고, libevent의 목적은 약간 다릅니다 : 디스크립터 그룹을 감시하고 읽기/쓰기가 준비 될 때마다 통지를받습니다.

libevent이 다른 모든 OS'es에서 비슷한 기능을 제공하지 않기 때문에 libevent이 모두 inotify 인 경우 확실하지 않습니다.

0

그냥 간단한 논리를 사용하면이 파일이 삭제되었는지 여부를 확인할 수 있습니까?

#include <sys/types.h> 
#include <sys/stat.h> 
#include <unistd.h> 

struct stat st = {0}; 

if (stat("/var/log/file.1", &st) == -1) { 
    printf("file is deleted or not present"); 
} 

당신은 또한 당신이 파일이 잘린 경우 말할 수 있습니다 꼬리 (-f 및 -F)의 소스를 볼 수

관련 문제