lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


It was thus said that the Great Jorge once stated:
> Hi everyone,
> 
> I'm trying to use luasocket's select() to read from files, under Linux. 

  From files, like '/usr/local/include/lua.h' or from any type of device
that uses a file handle?  I only ask this because using select() on an
actual file (like '/usr/local/include/lua.h') will *always* be readable and
writable---i.e. there's just no use in using select() for files [1] as Linux
does some aggressive memory caching.

  select() [2] works much better for sockets and character devices like
/dev/tty.

> As far as can see, it is possible now trough judicious use of setfd() 
> (and dirty()?). But I do not see where i can get that fd from (io.* uses 
> a opaque thing for files).

  To get the underlying file descriptor from a FILE *, you need to use the C
function fileno().

> Is there any working code out there doing this?

  For files?  I don't know, but it would be similar with files (as sockets
are file handles).  

  -spc

[1]	I think this is even true for network file sytems like NFS but I
	don't have a way to experiment with this right now.

[2]	If you are using Linux, epoll() is a much better API for this type
	of thing.