event

2 отговора 81 прегледа
#1

event

Здравейте. Искам да следя във фонов режим някакво събитие, примерно създаване на файл или някаква промяна в него. За целна написах следната програма:

static void sigalarm(int signo)
{
char *cp,buf[2];
int fin;
struct timeval tv;
gettimeofday(&tv, NULL);
if (start.tv_sec==0) start = tv;

fin = open("test",O_RDWR);
read(fin,buf,1);
close(fin);

if(buf[0]=='1'){
fin = open("test",O_RDWR);
write(fin,"0",1);
close(fin);
}

alarm(1);
}

static inline void set_signal(int signo, void (*handler)(int))
{
struct sigaction sa;
memset(&sa, 0, sizeof(sa));
sa.sa_handler = (void (*)(int))handler;
sigaction(signo, &sa, NULL);
}

main()
{
set_signal(SIGALRM, sigalarm);
sigalarm(0);

for(;;){
}

}

Ама явно не е това подхода, щото top-a, обажда 90% заетост на CPU:) Та питането ми е за някакав по-елегантен начин.

Отговор
в отговор на div #2

Re: event

FAM няма ли да ти свърши работа?

[линк]

Отговор
в отговор на mironcho #3

Re: event

Мерси. Предполагам , че има по-елегантен начин, и самата система си го може:) Май ще трябва да почетем, още малко...

Отговор