Reputation: 24364
Does the libevent
deal with buffered file I/O? I know it handles sockets pretty good, but does it concern also normal files or it's "only" an epoll/...
wrapper?
Upvotes: 1
Views: 1684
Reputation: 70126
Using libevent (or any of the underlying readiness notification mechanisms such as e.g. epoll
or kqueue
) with normal file descriptors does not normally make sense. Exceptions are files on NFS or using kernel AIO with an eventfd
.
File descriptors on local disks are always ready, there is always sufficient buffer space, and operations always complete "immediately". The write operation merely copies data to the buffer cache, and the actual write to the disk happens ... whenever it happens. (note that this link is Linux-specific, but apart from maybe some little implementation details it works the same on other systems)
Upvotes: 1
Reputation: 3638
libevent sits at a lower level than buffered file I/O (what you get with stdio.h
), using file descriptors directly. You are correct thinking that it is 'just' an epoll/select/kevent/etc wrapper. Its purpose is to listen for events on descriptors, which is the lowest level of file I/O. However, you can use it in conjunction with the stdio.h
file I/O library facilities, as that also eventually uses the file descriptors. You can use fileno(3)
to retrieve the file descriptor from the FILE *
you want to wait on.
Upvotes: 0