Date: Mon, 05 Mar 2012 22:57:35 +0200 From: Markiyan Kushnir <markiyan.kushnir@gmail.com> To: freebsd-hackers@freebsd.org Subject: Re: watching for a directory with kqueue Message-ID: <4F5528BF.9030109@gmail.com> In-Reply-To: <4F550227.2010006@FreeBSD.org> References: <4F550227.2010006@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 05.03.2012 20:12, Sergey Matveychuk wrote: > Hi. > > I've met a problem with the subj. Could you help? > > I'm watching for a directory: > EV_SET(kq_change_list, fd, EVFILT_VNODE, > EV_ADD | EV_ENABLE | EV_ONESHOT, > NOTE_DELETE | NOTE_WRITE | NOTE_EXTEND | NOTE_ATTRIB, > 0, 0); > > When the directory changed, I read its contens with opendir, like that: > struct kq_event kq_event[1000]; > ... > while(1) { > n = kevent(kq, kq_change_list, chlist_used, kq_event, 1000, NULL); > for(i = 0; i < n; i++) { > if(kq_event[i].fflags & NOTE_EXTEND || kq_event[i].fflags & NOTE_WRITE) { > opendir(.....) > > It works when I create a few files (1-3), but when I create 10 files > with touch(1) I see only 3-6 files with opendir. I've got only one event > with kevent() (n=1). Looks like I should got a few events, but I did > not. Could you give an advice how to get all created files? Try to put some delay (~10ms) after your call to kevent(). Markiyan. > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4F5528BF.9030109>