libevent를 사용하여 파일 제거/업데이트를 모니터 할 수 있습니까?파일 삭제/수정 중 libevent
/var/log/file.1이 제거되었다고 가정하고 프로그램에서보고하고 싶습니다. 이것이 가능한가? 그렇다면 어떻게?
내 운영 체제가 Linux이고 일부 운영 체제 작업 중에 메시지를 발생시키는 악마를 만들고 싶습니다.
어디에서 자세한 정보를 찾을 수 있습니까?
libevent를 사용하여 파일 제거/업데이트를 모니터 할 수 있습니까?파일 삭제/수정 중 libevent
/var/log/file.1이 제거되었다고 가정하고 프로그램에서보고하고 싶습니다. 이것이 가능한가? 그렇다면 어떻게?
내 운영 체제가 Linux이고 일부 운영 체제 작업 중에 메시지를 발생시키는 악마를 만들고 싶습니다.
어디에서 자세한 정보를 찾을 수 있습니까?
코드가 특히 Linux의 대상 인 경우 inotify(7)
기능을 대신 사용할 수 있습니다. 그것은 매우 간단한 프로그래밍 인터페이스를 가지고 있으며, 파일 변경과 삭제를 모니터하기위한 것이고, libevent
의 목적은 약간 다릅니다 : 디스크립터 그룹을 감시하고 읽기/쓰기가 준비 될 때마다 통지를받습니다.
libevent
이 다른 모든 OS'es에서 비슷한 기능을 제공하지 않기 때문에 libevent
이 모두 inotify
인 경우 확실하지 않습니다.
그냥 간단한 논리를 사용하면이 파일이 삭제되었는지 여부를 확인할 수 있습니까?
#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)의 소스를 볼 수
구조체 합계의 다른 요소를 확인하여 파일의 많은 속성을 확인할 수 있습니다. IIRC, 그들은'select (2)'를 사용합니다. – Aif
이 inotify 솔루션을 받아 들였고, 제가 찾고있는 것에 아주 가깝게 보입니다. – cateof