次のコードがあります。
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#include <event.h>
void fd_cb(int fd,short event,void *arg){
printf("changed\n");
}
int main(int argc, const char* argv[]){
struct event eoh_ev;
FILE *fp;
int fd;
fp=fopen("/var/log/syslog","rw");
fd=fileno(fp);
event_init();
event_set(&eoh_ev,fd,EV_READ|EV_WRITE,fd_cb,NULL);
event_add(&eoh_ev,NULL);
event_dispatch();
return 0;
}
ご覧のとおり、/var/log/syslog に何かが書き込まれたときに fd_cb(...) を呼び出そうとしています。
問題は、「changed」が印刷されないことです。
コードをルートとして実行しています。
よろしくお願いします。